Fonction "statut" des scripts

Bonjour,

J'ai un fichier Google Sheet sur lequel j'utilise plusieurs scripts (notamment pour importer des données de plusieurs autres classeurs).
Certains de ces scripts sont agrémentés d'un déclencheur, d'autres non.

J'ai quelques difficultés à m'y retrouver avec l'état de mise à jour de mes différents onglets.
Savez-vous s'il est possible de reporter, dans un nouvel onglet que je nommerais "Statut Scripts", le statut de chacun de mes scripts avec la date du dernier déclenchement ?

EX :
Script 1 = 2022/05/18
Script 2 = 2022/05/13
Script 3 = 2022/04/29
...

Merci d'avance pour votre aide !

Bonjour,

Les scripts ont un id visible dans la barre d'adresse, par exemple

https://script.google.com/home/projects/1o14GxQUZS5vGTSsTn5vo7uOrAr4wWzV5XacxpuYEQuwP23VHhz_dug9T/edit

Mais ceci est global pour toutes les fonctions qu'il regroupe !

1-

Il semble qu'il faille se connecter à google cloud platform !! et dans ce cas on pourrait utiliser ceci ...

function dernierExecution() {
  const scriptId = '1o14GxQUZS5vGTSsTn5vo7uOrAr4wWzV5XacxpuYEQuwP23VHhz_dug9T'
  const url = "https://script.googleapis.com/v1/processes?pageSize=1&userProcessFilter.scriptId=" + scriptId;
  let response = UrlFetchApp.fetch(url, {
    muteHttpExceptions: true,
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
    },
  });
  console.log(JSON.parse(response.getContentText()))
}

mais qui donne chez moi

    { error: 
   { code: 403,
     message: 'Request had insufficient authentication scopes.',
     status: 'PERMISSION_DENIED',
     details: [ [Object] ] } }

sans google cloud platform

2- l'autre solution serait de prendre les devants et intégrer cette donnée dans PropertiesService.getScriptProperties()

et donc revoir tous les scripts !

Bonjour Steelson,

Merci pour ta réponse.
Je peux envisager de revoir tous les scripts, s'il ne s'agit "que" d'une ligne à ajouter. Mais comment l'intégrer à mon script actuel ?

J'ai une autre idée que je vais tester (tu peux le faire aussi ...)... créer un fichier spy/espion et à chaque début de script mettre

SpreadsheetApp.openById('1bnh0HisP7aO0fFBZs62DYYz7YjsOzrVUvKgEP7RVc00').getSheets()[0].appendRow([arguments.callee.name,new Date()])

edit : testé avec succès (mais ne fonctionne sans doute pas sur les fonctions appelées dans une cellule ("custom functions")

image

on peut ajouter d'autres paramètres comme l'id du fichier (ou le nom), l'id de la feuille (ou le nom), etc. mais là cela dépend du script.

Super, cela fonctionne parfaitement ! Merci !

J'ai tenté, en revanche, en vain, de remplacer le "openById('ID DU FICHIER')" par "getSheetByName('NOM DE LA FEUILLE DE DESTINATION')", mais il me renvoie une erreur. Je ne vois pas trop comment faire...
Par ailleurs, penses-tu qu'il y a un moyen de faire en sorte que la date et l'heure tombent dans une cellule prédéfinie ? J'ai là aussi tenté le "getRange", sans succès...

si tu veux une feuille en particulier

SpreadsheetApp.openById('#######').getSheetByName('laFeuille').appendRow([arguments.callee.name,new Date()])

ou sur le fichier en cours

SpreadsheetApp.getActiveSpreadSheet().getSheetByName('laFeuille').appendRow([arguments.callee.name,new Date()])

si tu veux un endroit précis de la feuille

SpreadsheetApp.getActiveSpreadSheet().getSheetByName('laFeuille').getRange('Z1').setValue(new Date())

Merci beaucoup Steelson. Tout fonctionne parfaitement !!!

Rechercher des sujets similaires à "fonction statut scripts"