Copier une feuille d'un SpreadSheet Google Sheet à un autre SpreadSheet avec JS

Résolu/Fermé
Agraphe - Modifié le 6 sept. 2019 à 12:17
 Agraphe - 6 sept. 2019 à 16:22
Hello !

Sur Google Sheet je tente de créer un script JS qui aurait la fonction suivante : Copier toute les 2 minutes le contenu complet d'une feuille (feuille_A) d'un SpreadSheet (ID_A) et de le coller sur une autre feuille (feuille_B) d'un autre SpreadSheet (ID_B). J'ai tenté de nombreuse chose dont copyTo qui ne fonctionne pas d'un SpreadSheet à l'autre. Je précise que je ne souhaite pas utiliser la formule Importrange, il faut que cela soit fait dans le script de Google.

J'ai donc essayé quelque chose comme ça :
function myFunction() {
  var classeur_source = SpreadsheetApp.openById("ID_A")
  var feuille_source = classeur_source.getSheetByName('Feuille_A');
  var cellule_source_range = feuille_source.getDataRange();
  var cellule_source_range_2 = cellule_source_range.getA1Notation();
  var cellule_value = cellule_source_range_2.getValues();
  
  var classeur_cible = SpreadsheetApp.openById('ID_B');
  var feuille_cible = classeur_cible.getSheetByName('Feuille_B');
  
  cellule_cible.clear({contentsOnly: true});
  var cible_2 = SpreadsheetApp.openById('1mGeXfFjcB9k5Lu6MUro2wm4LYQapQT-JMDSEWyS6GBs').getSheetByName('Commande M Stock').getRange('C1:C10');
  
 feuille_cible.getRange(cellule_source_range_2).setValues(cellule_value);


EDIT : Ajout des balises de code

Mais ça ne fonctionne pas. J'ai beau rechercher sur internet je ne trouve rien de neuf pour m'aider. Je suis novice, il y a très certainement quelque chose que je n'ai pas compris.


Merci pour votre aide
A voir également:

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 sept. 2019 à 12:22
Bonjour,
Pas testé .. mais un truc du genre devrait fonctionner :
https://developers.google.com/apps-script/reference/spreadsheet/sheet#copyTo(Spreadsheet)
function CopyDataToNewFile() {
  var sss = SpreadsheetApp.openById('ID_A'); // sss = source spreadsheet
  var ss = sss.getSheetByName('Monthly'); // ss = source sheet
  //Get full range of data
  var SRange = ss.getDataRange();
  //get A1 notation identifying the range
  var A1Range = SRange.getA1Notation();
  //get the data values in range
  var SData = SRange.getValues();

  var tss = SpreadsheetApp.openById('ID_B'); // tss = target spreadsheet
  var ts = tss.getSheetByName('RAWData'); // ts = target sheet
  //set the target range to the values of the source data
  ts.getRange(A1Range).setValues(SData);

}

1
Merci :D
0