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

Résolu
Agraphe -  
 Agraphe -
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

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. Agraphe
       
      Merci :D
      0
  2. Agraphe
     
    Super, ça marche ! Ça rame un peu mais ça marche !
    0