1

Est-ce que quelqu'un sait s'il existe un script d'application Google qui fait ce que VMerge fait mais qui conserve la mise en forme des tables fusionnées? (dans Google Spreadsheets)Tables de script de Google Apps vers VMerge AVEC FORMATAGE

VMerge est un script qui peut être utilisé comme une formule personnalisée, mais un script que je peux déclencher fera très bien aussi.

Toute aide serait grandement appréciée.

Répondre

1

Si vous avez besoin d'un script séparé pour mettre sur la mise en forme ...

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet1'); 
    s.getRange('A1').copyFormatToRange(sheet, column, columnEnd, row, rowEnd); 
} 
+0

Je peux voir ce que fait votre script, mais vmerge permet aux tables de croître en lignes/colonnes. Le scipt que vous avez aimablement fourni malheureusement ne répond pas à cela. Merci quand même. – Vin

1

VMerge attend des tableaux-de-valeurs en tant que paramètres, et ne connaît donc pas ce que les cellules ont été référencées la création de ces tableaux. Lorsqu'il est utilisé en tant que formule personnalisée, l'analyseur de feuille résout tous les paramètres de plage en leurs valeurs avant de les transmettre à VMerge. De plus, les paramètres peuvent être codés en dur ou être le résultat de requêtes ou d'autres fonctions renvoyant des plages. Pour cette raison, il n'est pas possible de modifier VMerge pour copier les formats de cellule dans la nouvelle table fusionnée. Pour compliquer davantage les choses, les fonctions personnalisées ne peuvent pas modifier les cellules en dehors de celles auxquelles elles sont attachées, elles peuvent uniquement renvoyer des valeurs ou des tableaux de valeurs. De commentaire à Issue 37:

2) Scripts utilisés comme fonctions cellulaires ne sont pas autorisés à faire des choses complexes comme se connecter à d'autres API ou définir les valeurs d'autres cellules. Les scripts utilisés comme fonctions de cellule ne peuvent renvoyer qu'une valeur.

Alors vous allez devoir vous contenter d'une fonction que vous appelez des scripts. La fonction suivante joindra plusieurs plages dans une nouvelle table à un point d'ancrage donné. Comme j'ai commencé par essayer d'en faire une fonction personnalisée appelable à partir d'une feuille, les paramètres sont des expressions chaîne de plages, dans a1Notation. (Il peut facilement être refactorisé pour traiter directement les objets Range.)

L '«ancre» de la nouvelle gamme devrait être une cellule. Une ou plusieurs gammes de n'importe quelle taille peuvent être jointes - chacune sera positionnée directement en dessous de la précédente.

Exemples:

  • VJoin("D1","A1:B"); - Toutes les colonnes A & B dupliqués dans les colonnes D & E
  • VJoin("Sheet2!A1","Sheet1!C9:E10","Sheet1!A14:B15"); - Deux gammes différentes feuilles 1 jointes et copiées à la feuille 2.

Voici le code:

/* 
* Vertically join the ranges from multiple sources into a new table 
* starting at the given anchor point. Values and formatting are copied. 
* 
* @param {a1Notation} anchorA1 Anchor for joined table. 
* @param {a1Notation} sources One or more source ranges. 
*/ 
function VJoin(anchorA1,sources) { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var anchor = sheet.getRange(anchorA1); 
    var anchorSheet = anchor.getSheet(); // in case anchorA1 is not on the "active sheet" 
    var nextAnchor = anchor; 

    for (var i in arguments) { 
    // Arguments are expected to be Strings, containing a1Notation. 
    if (i == 0) continue; // First argument was anchorA1, skip it. 
    if (arguments[i].constructor == String) { 
     var source = sheet.getRange(arguments[i]); 
     var destination = anchorSheet.getRange(nextAnchor.getRow(), nextAnchor.getColumn(), 
             source.getNumRows(), source.getNumColumns()); 
     // Copy all values & formatting to new location. 
     source.copyTo(destination); 
     // Prepare for next range by moving our anchor 
     nextAnchor = sheet.getRange(nextAnchor.getRow() + source.getNumRows(), 
            nextAnchor.getColumn()); 
    } 
    else { 
     throw new Error ("Expected String containing a1Notation.") 
    } 
    } 
} 
-1

Je trouve les fonctions intégrées ci-dessous pour bien tirer les informations de différents fichiers Google Sheet. J'ai défini des plages nommées pour définir les colonnes à tirer dans le Maître, et aussi savoir que j'ai un problème avec février

=sort(arrayformula({ 
importrange("1sTS3AUfoXqXYrMYJrro9pGEKwqVL_k854yhniNOHNWc","JCJan"); 
importrange("1ETSD4J-8AI-7pVK0hXJKaWtG3RlHKpnco88Yj8sqNN8","JCFeb")}),1,True) 
+0

Cela ne fait rien avec le format. –