Google Script - Créer spreadsheets à partir d'un modèle via une boucle

Bonjour,

j'ai un fichier sheet de travail complexe que je souhaiterais partager à mes collègues afin qu'il soit utilisable à partir d'un modèle.

Ce fichier dont le lien est ci-dessous (version très simplifiée) disposent de plusieurs onglets.

https://docs.google.com/spreadsheets/d/1n2Zg2aOcBzbYfa-qPBcbiBUfIW7XStOWnrPMa73T-6g/edit?usp=sharing

Dans l'onglet "Liste des spreadsheets liées", en colonne A est listé les URL de mes sheet qui me servent de références (modèles).

Je souhaiterais via un script que le script copie chaque modèle et me le colle dans le dossier qui a été créé via le script "createModelDriveFolder".

Puis, que le script m'insère en colonne B de l'onglet "Liste des spreadsheets liées", le nouveau URL de fichier créer

Je bloque sur la loupe.

Merci de votre patience et bienveillance pour me trouver une solution adéquate

au passage, quel est le nom des fichiers recopiés ?

essaie ceci à la fin de ton script

voir ci-dessous avec un environnement de test avec fichiers réels

attention, je n'ai pas testé du tout car je n'ai pas lesdits fichiers dans mon drive

il faut aussi qu'ils existent bien sûr

Bonjour,

il semblerait qu'il y a un petit bug, voir imprim écran ci-dessous

Je vous ai donné l'accès au dossier parent en écriture, dont voici le lien:

Ps: je ne peux pas partager l'url, voici l'ID du folder dans drive !!!

1QHnJ3V1YZxBcPv8V-UzGhJzSB5KIInDj

image

en dernière ligne, j'aurais du mettre en effet

ssSheetCopied.getRange('B3:B' + ssSheetCopied.getLastRow()).setValues(listNewUrls)

pour ne pas écraser les valeurs de A

désolé, mais comme je disais, sans accès à de vrais fichiers, j'ai fait l'exercice sans pouvoir tester, et je répète, cela ne peut fonctionner que si les urls sont réels et non fictifs

je vais me créer un fichier avec une liste d'urls réelles chez moi pour mettre au point

si on s'en tient qu'aux IDs des fichiers, ceci fonctionne bien

function myFunction() {
  const createFolderModels = DriveApp.getFolderById("18akqHAN7PSPMnG3h5HpCskQsMCv4TqCM")
  const ssSheetCopied = SpreadsheetApp.getActiveSpreadsheet()
  let listNewUrls = []
  ssSheetCopied.getRange('A3:A' + ssSheetCopied.getLastRow()).getValues().flat().forEach(modele => {
    if (modele != '') {
      try {
        var file = DriveApp.getFileById(modele)
        var newID = file.makeCopy(file.getName(), createFolderModels).getUrl();
        listNewUrls.push([newID])
      }
      catch (e) {
        listNewUrls.push([e])
      }
    }
  })
  ssSheetCopied.getRange('B3:B' + ssSheetCopied.getLastRow()).setValues(listNewUrls)
}

je n'ai pas compris pourquoi avec les urls cela ne fonctionnait pas, reste à investiguer !

image

Désolé du délai de ma réponse. Ta solution me convient très bien et me permet de faire le job avec quelques modifs de mon fichier sheet !

Merci une nouvelle fois et bonne journée.

Rechercher des sujets similaires à "google script creer spreadsheets partir modele via boucle"