Bonjour,
J'aimerais connaitre un moyen de récupérer l'URL du fichier en cours d'utilisation pour
la copier dans un cellule précise d'un autre fichier Google Sheet afin de l'exploiter dans un importrange.
Merci par avance
Cordialement.
Bonjour,
J'aimerais connaitre un moyen de récupérer l'URL du fichier en cours d'utilisation pour
la copier dans un cellule précise d'un autre fichier Google Sheet afin de l'exploiter dans un importrange.
Merci par avance
Cordialement.
Bonjour,
Merci pour votre réponse rapide.
Vous m'avez aidé par deux fois sur une même problématique et malgré tout je ne réussit pas à finir mon script et à le faire fonctionner.
Je ne sais pas si j'ai le droit d'exposer cette problématique dans la même discussion. Si je dois en recréer une, faite le moi savoir.
Je vais essayer de décrire dans le détail mes attendus mais également de partager ce que j'ai déjà réalisé.
Je ne connais pas toutes les possibilités de Google Apps Script donc j'ai émis deux hypothèses.
Hypothèse 1 :
Mon fichier standard d'audit, une fois réalisée, doit par le biais du bouton "Envoie de l'audit" être copié afin de garder la preuve de l'audit.
L'URL de cette copie doit être collé dans un planning afin d'être exploité par une formule (importrange).
Et pour finir, afin de faciliter le prochain audit, toutes le contenu des cellules "réponses" de l'audit standard doivent être vidées et les cases décochées.
Hypothèse 2 : (Je doute de la possibilité de récupérer l'URL d'un fichier qui vient d'être créé par le même script.)
Donc tout simplement ajouter un autre bouton. Il ne sera utilisé que sur les copies audits pour récupérer et coller l'URL sur le planning.
En ce qui concerne ce que j'ai réalisé :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function TEST1() { var spreadsheet = SpreadsheetApp.getActive(); // Ce permet de créer une copie du fichier en cours spreadsheet.getRange("Y1").activate(); spreadsheet.copy('Copie de Audit plan de contrôle'); // Il doit y avoir ici quelque chose qui doit faire référence au fichier que je viens de copier, si cela est possible var ss = SpreadsheetApp.getActiveSpreadsheet();getUrl() // Ici j'ai des doutes sur le fait qu'on puisse aller chercher l'URL d'un fichier que je viens de créer var s = ss.getActiveSheet(); var url = ss.getUrl(); // Il me manque ici un script qui colle dans un le fichier planning var app = SpreadsheetApp; // Ici je "Clean" les cellules et les cases à cocher var activeSheet = app.getActiveSpreadsheet().getActiveSheet(); activeSheet.getRange("I1:I4").clearContent(); activeSheet.getRange("L1:L4").clearContent(); activeSheet.getRange("N1:N4").clearContent(); activeSheet.getRange("I6:I31").clearContent(); activeSheet.getRange("J6:J31").clearContent(); activeSheet.getRange("K6:K31").clearContent(); activeSheet.getRange("L6:L31").clearContent(); }
Vous avez un doute, mais avez-vous tester ?
Dans ce genre de situation, il ne faut pas hésiter à travailler sur un jeu de fichiers plus simples, avec des scripts par conséquent plus simples, pour tester le processus.
Aujourd'hui, qu'est ce qui ne fonctionne pas dans votre script ?
Oui oui bien sûr. Je test chaque petites portions de code que j'écris afin de vérifier qu'il fonctionne.
Afin de faciliter le processus j'ai justement pensé à l'hypothèse 2 avec 2 boutons (2 scripts).
L'un pour copier mon fichier et effacer le contenu des cellules. L'autre pour récupérer l'Url de ce nouveau fichier et la copier dans un planning.
Dans les deux cas de bloque sur ce dernier point.
A l'heure actuelle, le script me permet :
- De créer une copie de mon fichier drive
- De décocher et d'effacer tous les commentaires sur le fichier d'origine.
Il me manque donc la 3ème partie qui consisterait (si c'est possible) à récupérer l'Url de la copie pour la coller dans un planning.
C'est sur cette étape que je suis perdu. Vous m'aviez répondu pour la copie de l'Url mais je n'ai pas réussi à la faire fonctionner.
Comment fais-tu la copie ?
La copie du fichier ce fait grâce à ce code :
J'y mets directement à la suite ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function COPIE() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('H9').activate(); spreadsheet.copy('Copie de Audit Plan de contrôle');
Il me permet de clear les cellules.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var app = SpreadsheetApp; var activeSheet = app.getActiveSpreadsheet().getActiveSheet(); activeSheet.getRange("I1:I4").clearContent(); activeSheet.getRange("L1:L4").clearContent(); activeSheet.getRange("N1:N3").clearContent(); activeSheet.getRange("J6:J31").clearContent(); activeSheet.getRange("K6:K31").clearContent(); activeSheet.getRange("L6:L31").clearContent(); activeSheet.getRange("I6:I31").clearContent();
Lors de l'exécution de la fonction la fichier ne s'ouvre pas visuellement.
Idéalement, tu voudrais faire ça :
Sauf que openByName() ne semble pas exister... Tu auras peut-être une solution ici : https://stackoverflow.com/questions/...dsheet-by-name
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 spreadsheet.copy('Copie de Audit Plan de contrôle'); var spreadsheet = SpreadsheetApp.openByName('Copie de Audit Plan de contrôle'); var url = spreadsheet.getUrl(); // faire quelque chose avec l'URL ici
Il n'y aucun raison que ton fichier s'ouvre lors de l'exécution de ton script. Ouvre un fichier dans un script ne revient pas à demander à ton navigateur internet d'ouvrir ce fichier. Tout ce passe dans le cloud : c'est comme ouvrir un fichier texte sur ton PC avec Python, tu ne vas pas voir Notepad s'ouvrir![]()
Ce code pourra t'aider :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function getFileUrl(filename) { var files = DriveApp.getFilesByName(filename); var array = new Array(); while (files.hasNext()) { var file = files.next(); array.push(file.getUrl()); } return array; }
J'ai une demande d'autorisation en boucle.
Je pense que c'est liée au dernier code que tu m'a partagé. Je ne le comprend pas bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function COPIE() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.copy('Copie de Audit Plan de contrôle'); // Copie le fichier et le nomme de cette manière. Marche niquel ! var files = DriveApp.getFilesByName('Copie de Audit Plan de contrôle'); var array = new Array(); while (files.hasNext()) { var file = files.next(); array.push(file.getUrl()); } return array; // Manque l'ouverture du planning var spreadsheet = SpreadsheetApp.getActive(); // Colle l'URL dans la cellule souhaitée spreadsheet.getRange('C9').activate(); spreadsheet.copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
Partager