Re: [Apps-Script] Execution problem with autorisations

Skip to first unread message

Andrew Roberts

May 23, 2024, 5:24:23 AMMay 23
What's the "yes" in onOpen()?

On Wed, 22 May 2024 at 21:00, Ismael Alaya <> wrote:
Hello everyone,

I hope you are well.

I got problems when I execute my program...

This is my error : 
Exception: You are not allowed to call SpreadsheetApp.getActiveSpreadsheet. Required permissions: ( ||

I don't understand, it's my sheet...

This is my code : 

function onOpen() {
var ui = SpreadsheetApp.getUi();
// Ajoute un menu personnalisé
ui.createMenu('Mon Menu')
.addItem('Je crée mon devis', 'createQuote')

function createQuote() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var feuille = spreadsheet.getActiveSheet();
var lastRow = feuille.getLastRow();
var range = feuille.getRange(lastRow, 1, 1, 5);

// Récupérer les données de la dernière ligne
var data = range.getValues()[0];
// Ajouter la date du jour dans la colonne D
var dateDuJour = new Date(); // Obtenir la date actuelle
feuille.getRange(lastRow, 4).setValue(dateDuJour); // Insérer la date dans la colonne D

// Nom du dossier à créer (utiliser le nom de la colonne C comme nom de dossier)
var nomDossier = data[2]; // Colonne C

// Récupérer le dossier parent du fichier Google Sheets
var fichier = DriveApp.getFileById(spreadsheet.getId());
var dossierParent = fichier.getParents().next();

// Créer le dossier s'il n'existe pas déjà dans le dossier parent du fichier Google Sheets
var dossier;
var dossiers = dossierParent.getFoldersByName(nomDossier);
if (dossiers.hasNext()) {
dossier =;
} else {
dossier = dossierParent.createFolder(nomDossier);

// ID du modèle Google Docs
var templateId = '1GCHwUg8TTly3Q4Ncq7O2Z4qN4OHqm8Nj6BBzF6iWPr0'; // ID de votre modèle

// Obtenir le modèle Google Docs
var templateFile = DriveApp.getFileById(templateId);

// Nom du nouveau document (utiliser la valeur de la colonne E comme nom)
var nouveauDocNom = data[4]; // Colonne E

// Créer une copie du modèle Google Docs dans le dossier spécifié avec le nom spécifié
var newDoc = templateFile.makeCopy(nouveauDocNom, dossier);
var newDocId = newDoc.getId();

// Ouvrir le nouveau document
var doc = DocumentApp.openById(newDocId);
var body = doc.getBody();

// Remplacer les mots-clés dans le document avec les données de la ligne sélectionnée
body.replaceText('{ID Quote}', data[0]); // Remplacez {ID Quote} par le mot-clé dans votre document pour la colonne A
body.replaceText('{ID Client}', data[1]); // Remplacez {ID Client} par le mot-clé dans votre document pour la colonne B
body.replaceText('{NAME}', data[2]); // Remplacez {NAME} par le mot-clé dans votre document pour la colonne C

// Obtenir le nom du nouveau document sans espaces pour le lien hypertexte
var nouveauDocNomSansEspaces = nouveauDocNom.replace(/\s+/g, '_');

// Insérer un lien hypertexte vers le nouveau document dans la colonne E avec le nom du document comme texte du lien
feuille.getRange(lastRow, 5).setFormula('=HYPERLINK("' + doc.getUrl() + '", "' + nouveauDocNomSansEspaces + '")');

Thanks a lot !!

You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Andrew Apell

May 23, 2024, 1:48:41 PMMay 23
to Google Apps Script Community
Andrew, you might have translated the code from French to English or something.

addToUi becomes addyes.

Andrew Apell

May 23, 2024, 1:49:46 PMMay 23
to Google Apps Script Community
... sorry addTyes

Andrew Roberts

May 24, 2024, 4:59:41 AMMay 24
Reply all
Reply to author
0 new messages