[Script] lancement de plusieurs script à la suite

Bonjour,

J'aimerais pouvoir comme sur Excel avec un fichier VBS,

Lancer à partir d'un fichier Google sheet plusieurs scripts à la suite se situant sur plusieurs fichiers Google sheet.

Comment faire s'il vous plaît?

nb. Je sais le faire quand les scripts sont tous dans le même fichier. Mais si ils sont dans différents fichiers et que je veux les lancer un par un à la suite comment faire?

merci

Jack

Bonjour,

On met généralement les script dans un fichier .... en réalité, il faut d'abord considérer que le script est lui-même un fichier Google Apps Script (gas)avec un identifiant et la feuille aussi et qu'on lie les deux sans réellement le savoir puisqu'on accède au script via le fichier GSheets.

Rien n'empêche de créer directement un gas et sans lien avec un fichier GSheets. Pour cela on peut le créer à partir du drive.

image

A partir de là, on peut écrire un script qui dialoguera avec tous les fichiers possibles (boite mails, agenda, feuilles de calcul GSheets, ...)

Il suffit d'en connaître l'identifiant et d'appeler notamment le GSheets par openById. De là tu peux avoir donc ta bibliothèque de script qui est lancée vers plusieurs fichiers de données par exemple.

Bonjour,

Merci pour ces infos.

Peux tu s'il te plaît me montrer comment appeler les différents fichiers avec leurs scripts pour les lancer à la suite?

si tu peux me donner un code je remplit juste les ID ou bien avec le nom des fichiers comme tu m'avais montrer avant? Par exemple avec 10 fichiers différents et 5 scripts par fichier.

jack

je ne sais pas appeler un script dans un autre fichier (gs/gas), je veux juste dire ici qu'on peut rassembler les script dans ce même fichier "gas"

mais je vais me renseigner ...

Peux tu s'il te plaît me montrer comment appeler les différents fichiers avec leurs scripts pour les lancer à la suite?

je confirme que ceci ne semble pas possible

I took two spreadsheets and wrote some functions to see if I could get projects in different spreadsheets to communicate or projects in the same spreadsheet to communicate and as near as I can tell. They are autonomous entities. Functions defined outside of them are undefined inside of them.

il faut donc ramener les script dans un fichier maître qui exécutera les opérations ... il "suffit" dans le script de remplacer SpreadsheetApp.getActiveSpreadsheet() par SpreadsheetApp.openById(SPREADSHEET_ID)

peux tu s'il te plaît me faire un exemple avec deux fichiers et un gas dans le drive. Je les copie et j'essaye de lancer à partir du gas et je vois si ça exécute les scripts.

si tu peux uploader ici ou donner les 3 codes des 3 fichiers (1 fichier gas et 2 files GS nommé A et B).

merci

jack

attends ... je vais te solliciter alors, donne moi 2 fichiers A et B avec un script !

8a.xlsx (5.96 Ko)
2b.xlsx (5.83 Ko)

Fichier A le code:

function first() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Feuille 2'), true);
  };

  function second() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1:A5').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};

function Execute1(){
  first();
  second();
   };

Fichier B le code:

function third() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('2'), true);
  };

  function fourth() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};

function Execute2(){
  third();
  fourth();
   };

Je voudrais lancer du fichier gas du drive les scripts Execute1 et Execute2.

Ce ne sont pas des fichier xlsx mais des fichers gs juste que quand j enregistre de drive j ai ce format.

Merci

Jack

Tu crées un fichier maitre dans lequel tu mets

function Execute(){
  first();

  third();

};

// ========== action sur fichier a
function first() {
  var spreadsheet = SpreadsheetApp.openById(getFileId("mon fichier a"))
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Feuille 2'), true);
  spreadsheet.getRange('A1:A5').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};

// ==================action sur fichier b

function third() {
  var spreadsheet = SpreadsheetApp.openById(getFileId("mon fichier b"));
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('2'), true);
  spreadsheet.getRange('A1').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};

// =================fonction recherche id
function getFileId(nomDuFicherRecherche) {
  var files = DriveApp.getFilesByName(nomDuFicherRecherche);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

pas testé car tu m'as donné des fichiers excel

Comment faire pour te donner des fichier google sheet?

Je voudrais executer Execute1 et Execute2 et non pas first et third. Comment faire?

Comment faire pour te donner des fichier google sheet?

https://www.sheets-pratique.com/fr/cours/partage

Je voudrais executer Execute1 et Execute2 et non pas first et third. Comment faire?

ce n'est pas possible d'appeler une fonction d'une autre feuille https://forum.excel-pratique.com/sheets/script-lancement-de-plusieurs-script-a-la-suite-167700#p1038...

donc j'ai ramené le contenu dans Execute()

Ok tu as regroupé. Je test.

et donc ... tu as testé ?

bon, je l'ai fait et cela fonctionne parfaitement !

je rappelle que les codes dans les fichiers de base ne sont pas activés, il sont repris dans le fichier maître qui exécutera les opérations ... il "suffit" alors dans le script recopié en fichier maître de remplacer SpreadsheetApp.getActiveSpreadsheet() par SpreadsheetApp.openById(SPREADSHEET_ID)

ca marche.

 var fichier=DriveApp.getFileById("10Yxb7DeWu01J8Ru4AEMHQ4HG31pX29rrdWMxrc"); //ID du fichier à copier
 var dossier = DriveApp.getFolderById("1D_TtyJ5-GzDV35-p8l3sZHoRjsC"); //ID du dossier de destination

quand il s'agit de ces deux lignes de code je remplace par quoi?
je voudrais comme le fichier le nom et non pas l id. pour le dossier aussi.

Il faut aussi une fonction de recherche pour le dossier?

Jack

il faut éviter les questions à rebondissements, on finit pas s'y perdre

c'est une nouvelle question qui peut intéresser d'autres personnes, donc solde ce post si cela fonctionne et ouvre une nouvelle question

merci

Rechercher des sujets similaires à "script lancement suite"