Bonjour,
J'ai un fichier sheets qui me permet d'envoyer une feuille en PDF. Par contre lorsque je change d'année, je fait une copie dudit fichier, mais le soucis que j'ai c'est que l'adresse URL du fichier est toujours celle du fichier origine et non celle du fichier actif.
J'aimerai que la ligne située dans mon code s'actualise automatiquement.: const docID = '......................';
function envoiPDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = '1UO3KItXuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const feuilleID = '1108413420';
J'ai bien un code qui permet de récupérer l'URL complet du document actif,
function getUrl() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
Logger.log(ss.getUrl());
}
et un autre qui permet d'identifier l'ID du document
function getIdFromUrl() {
let ui = SpreadsheetApp. getUi()
let prompt = ui.prompt("Renseignez l'URL depuis laquelle vous souhaitez récupérer l'identifiant")
url = prompt.getResponseText()
ui.alert(url.match(/[-\w]{25,}(?!.*[-\w]{25,})/).toString())
}
Mon problème, comment faire pour tout intégrer dans mon code envoiPDF
Merci
Cordialement PIGA25
Intégrer l'ID du fichier à partir de son URL dans un code Le sujet est résolu
Re: Intégrer l'ID du fichier à partir de son URL dans un code
Bonjour,
J'ai un peu avancé. J'ai trouvé une façon de récupérer l'identifiant du fichier et à coller celui-ci dans une cellule.
Par contre comment faire pour ne pas avoir cette étape de manière à avoir directement le résultat
- dans le code : function envoiPDF() {,
- ligne : const docID =' ici '
le code que j'ai réussi à faire:
J'ai un peu avancé. J'ai trouvé une façon de récupérer l'identifiant du fichier et à coller celui-ci dans une cellule.
Par contre comment faire pour ne pas avoir cette étape de manière à avoir directement le résultat
- dans le code : function envoiPDF() {,
- ligne : const docID =' ici '
le code que j'ai réussi à faire:
Mercifunction getUrl() {
var app = SpreadsheetApp;
var classeur = app.getActiveSpreadsheet();
var feuille = classeur.getActiveSheet();
const cellule = feuille.getRange('A1');
const Cellule2 = feuille.getRange('A2');
var ss = SpreadsheetApp.getActiveSpreadsheet();
cellule.setValue(ss.getUrl());
var url = cellule.getValue();
Cellule2.setValue (url.match(/[-\w]{25,}(?!.*[-\w]{25,})/).toString())
}
- ChristopherH
- Invétéré
- Messages : 35
- Inscription : 13 janv. 2023 14:35
- Remercié : 3 fois
Re: Intégrer l'ID du fichier à partir de son URL dans un code
Hello Piga25 !
J'espère que tu vas bien.
Si tu as besoin de récupérer l'ID du fichier auquel ton script est rattaché (désolé si je n'ai pas compris !) tu peux utiliser tout simplement la méthode getId().
Exemple :
let id = SpreadsheetApp.getActive().getId()
Cela te retournera l'ID du Spreadsheet actif
Juste ici la documentation officielle de la classe Spreadsheet : https://developers.google.com/apps-scri ... heet?hl=fr
N'hésite pas à me dire si cela ne répond pas au besoin et à rajouter un max de précisions
Bonne journée,
Christopher
J'espère que tu vas bien.
Si tu as besoin de récupérer l'ID du fichier auquel ton script est rattaché (désolé si je n'ai pas compris !) tu peux utiliser tout simplement la méthode getId().
Exemple :
let id = SpreadsheetApp.getActive().getId()
Cela te retournera l'ID du Spreadsheet actif
Juste ici la documentation officielle de la classe Spreadsheet : https://developers.google.com/apps-scri ... heet?hl=fr
N'hésite pas à me dire si cela ne répond pas au besoin et à rajouter un max de précisions
Bonne journée,
Christopher
- NC_Quentin
- Invétéré
- Messages : 38
- Inscription : 10 oct. 2022 09:06
- A remercié : 1 fois
- Remercié : 12 fois
Re: Intégrer l'ID du fichier à partir de son URL dans un code
Bonjour !
Il y a une manière bien plus simple de récupérer l’ID du Spreadsheet auquel est lié un projet Apps Script. Il suffit tout simplement d’utiliser la fonction getId() de la classe Spreadsheet de SpreadsheetApp. En d’autres termes, changez votre code ainsi :
La variable doc contient déjà une instance de la classe Spreadsheet, c’est-à-dire un objet avec des règles et fonctions précises. Elle est obtenue avec SpreadsheetApp.getActive(), équivalente à SpreadsheetApp.getActiveSpreadsheet(), qui retourne, comme son nom l’indique, le classeur lié à votre projet Apps Script sous la forme de cet objet. Il ne reste plus donc qu’à utiliser getId() pour obtenir l’ID, et le tour est joué !
Attention toutefois avec feuilleID, qu’il faut probablement changer aussi. Je conseille de plutôt mettre quelque chose de cette forme :
En mettant le nom de la feuille à exporter au bon endroit, cela permet de garder un code relativement dynamique, pour peu que le nom de la feuille soit bon.
Enfin, si vous vouliez réellement utiliser votre fonction getUrl(), il faudrait changer la fonction pour qu’elle fasse un return, et simplement appeler la fonction et stocker la valeur de retour dans la variable. Par exemple :
Il y a une manière bien plus simple de récupérer l’ID du Spreadsheet auquel est lié un projet Apps Script. Il suffit tout simplement d’utiliser la fonction getId() de la classe Spreadsheet de SpreadsheetApp. En d’autres termes, changez votre code ainsi :
Code : Tout sélectionner
function envoiPDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = doc.getId();
const feuilleID = '1108413420';
// reste du code
}
La variable doc contient déjà une instance de la classe Spreadsheet, c’est-à-dire un objet avec des règles et fonctions précises. Elle est obtenue avec SpreadsheetApp.getActive(), équivalente à SpreadsheetApp.getActiveSpreadsheet(), qui retourne, comme son nom l’indique, le classeur lié à votre projet Apps Script sous la forme de cet objet. Il ne reste plus donc qu’à utiliser getId() pour obtenir l’ID, et le tour est joué !
Attention toutefois avec feuilleID, qu’il faut probablement changer aussi. Je conseille de plutôt mettre quelque chose de cette forme :
Code : Tout sélectionner
const feuilleID = doc.getSheetByName(" NOM DE LA FEUILLE VISÉE ").getSheetId()
En mettant le nom de la feuille à exporter au bon endroit, cela permet de garder un code relativement dynamique, pour peu que le nom de la feuille soit bon.
Enfin, si vous vouliez réellement utiliser votre fonction getUrl(), il faudrait changer la fonction pour qu’elle fasse un return, et simplement appeler la fonction et stocker la valeur de retour dans la variable. Par exemple :
Code : Tout sélectionner
function getIdFromUrl(){
// Récupère l’URL du document actif sous la forme d’une chaîne (string)
const docUrl = SpreadsheetApp.getActiveSpreadsheet().getUrl();
// Récupère l’ID du document actif à l’aide d’une regex.
// Attention ! String.prototype.match() renvoie un tableau potentiellement vide, cela peut donc entraîner une erreur en l’état.
const ID = docUrl.match(/[-\w]{25,}(?!.*[-\w]{25,})/)[0]
return ID;
}
function envoiPDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
// On appelle la fonction créée précédemment
const docID = getIdFromUrl();
// reste du code
}
Re: Intégrer l'ID du fichier à partir de son URL dans un code
C’est fantastique de voir comment la résolution collaborative de problèmes peut conduire à des solutions aussi efficaces ! L’intégration de la fonction getSheetId() change la donne pour quiconque cherche à rationaliser son code. Bravo à ChristopherH et NC Quentin pour avoir partagé leurs idées, vos contributions ont vraiment fait la différence !
Access the list 2 player games
Rejoignez la discussion 💬
Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres
Inscrivez-vous dès aujourd'hui
Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles
Inscription