Bonjour dans les feuilles de scripts de l'application Google J'essaie de comprendre comment ajouter une 4ème colonne à un tableau de 3 colonnes existant et entièrement rempli. La 4ème colonne va être définie sur une chaîne concaténée et manipulée des 3 premières colonnes.
Mon objectif final est de créer une chaîne d'insertion de base de données SQL à partir des 3 premières valeurs. Par exemple, si la ligne du tableau est 1, 2, 3, la colonne pour serait définie pour être insérée dans les valeurs du tableau (1, 2, 3); (pas une connexion de base de données programmatique juste la chaîne SQL réelle pour l'insertion)
Pourriez-vous m'aider avec la syntaxe ou le pseudo-code de la façon dont je travaillerais cela dans le tableau? Votre aide est très appréciée
Quelque chose comme:
const range=SheetHistory.getDataRange(); var array=range.getValues(); /*pseudo code*/ array = array + 4th column //add a 4th column to the array or move data to a new 4 column array For x = 1 through end of array ++x) // loop through array Array [x,4] = [x,1] & [x,3] [x,4] // set column 4 for each row = to a concatenated string derived from columns 1,2,3 for that row next x // repeat until end of array
3 Réponses :
Essayez ceci:
function addAColumn() { const ss=SpreadsheetApp.getActive(); const sh=ss.getActiveSheet(); const rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn()+1);//add a column here var vs=rg.getValues().map(function(r){return[r[0],r[1],r[2],String(r[0])+String(r[1])+String(r[2])];});//fill it here sh.getRange(sh.getLastRow()+1,1,vs.length,vs[0].length).setValues(vs); }
Cette fonction ajoutera une colonne à une feuille de calcul à 3 colonnes et la quatrième colonne sera remplie avec la somme des chaînes des 3 premières colonnes.
p>
Je pensais faire cela, mais le problème était que je traversais plusieurs itérations et qu'il y avait un changement de performance entre les feuilles actives à chaque fois, donc je cherchais à garder la charge de travail dans le tableau pour éviter les performances, mais j'ai essayé ceci et cela fonctionne totalement.
Je ne comprends pas pourquoi vous basculeriez entre les feuilles actives.
Vous pouvez simplement parcourir l'ensemble du tableau et ajouter la valeur de la quatrième colonne à chaque index de ligne comme
for (var i = 0; i < array.length ; i++) { array[i]["4th column"]=String(array[i]["1"])+String(array[i]["2"])+String(array[i]["3"]); }
Bien que ce code puisse résoudre le problème du PO, il est préférable d'inclure une explication sur la façon dont votre code résout le problème du PO. De cette façon, les futurs visiteurs peuvent apprendre de votre publication et l'appliquer à leur propre code. SO n'est pas un service de codage, mais une ressource de connaissances. De plus, les réponses complètes et de haute qualité sont plus susceptibles d'être votées. Ces fonctionnalités, ainsi que l'exigence que tous les messages soient autonomes, sont quelques-unes des forces de SO en tant que plate-forme, qui le différencie des forums. Vous pouvez modifier pour ajouter des informations supplémentaires et / ou pour compléter vos explications avec la documentation source.
Merci @ysf terminé
Bien, je me suis rendu compte que vous pouviez simplement ajouter dans une colonne sans manipuler la variable et je fouillais la syntaxe. Cela aide vraiment à voir votre code merci.
C'est assez simple, l'astuce est que votre tableau est un tableau 2D composé de lignes (première dimension) et de colonnes (deuxième dimension). Donc, faire un Pour chaque ligne du tableau, concaténer toutes les colonnes et stocker le résultat dans une nouvelle colonne de la ligne le ferait.
function makeSQLString() { const range=SpreadsheetApp.getActiveSheet().getDataRange(); var array=range.getValues(); for (var i = 0; i < array.length ; i++) { array[i][3]=String(array[i][0])+String(array[i][1])+String(array[i][2]); } console.log(array); }
Merci! Je ne savais pas que vous pouviez simplement l'ajouter, je pensais qu'il était peut-être nécessaire d'ajuster la variable. Merci pour votre explication et la syntaxe m'a vraiment aidé.
Je suis content que cela vous ait aidé. Veuillez accepter et / ou voter pour la réponse si cela fonctionne pour vous.