Copier une feuille d'un SpreadSheet Google Sheet à un autre SpreadSheet avec JS [Résolu]

-
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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
26332
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 septembre 2019
1794
1
Merci
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);

}

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60055 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
0
Merci
Super, ça marche ! Ça rame un peu mais ça marche !
Commenter la réponse de Agraphe