site sheets sheet scripts script google dopost doget apps application app google-apps-script permissions google-spreadsheet

google-apps-script - sheets - web app google apps script



Mensaje de error MailApp.sendEmail-"no tiene permiso para llamar a sendEmail" (1)

Los permisos son diferentes cuando se ejecuta un onEdit() SIMPLE onEdit() . Por el contrario, hay un disparador INSTALABLE . Aquí está la documentación para las restricciones de activación simples:

Documentación de Google - Disparadores - Restricciones

La documentación dice:

Ellos (un activador SIMPLE) no pueden acceder a los servicios que requieren autorización. Por ejemplo, un desencadenante simple no puede enviar un correo electrónico porque el servicio de Gmail requiere autorización

Debe configurar un activador instalable para poder enviar el correo electrónico.

En el menú EDITAR , elija, DISPARADORES DE PROYECTOS ACTUALES .

Denomine a su función algo diferente a onEdit .

Cuando cambio algo en mi hoja de cálculo, se ejecuta el desencadenador onEdit() , y puedo ver todos los msgbox que puse en mi código.

Mi función se detiene en esta línea

MailApp.sendEmail(emailAddress, subject, message);

Nunca veo el mensaje ''¡Correo electrónico enviado!'' Y obtengo un error en la TRANSCRIPCIÓN DE EJECUCIÓN:

No tienes permiso para llamar a sendEmail

Si ejecuto el script directamente en el editor de script, todo funciona bien ...

Aquí está mi código:

function onEdit() { var sheet = SpreadsheetApp.getActiveSheet(); var sheetname = sheet.getName() var AcCellRange = sheet.getActiveCell() var AcCol = AcCellRange.getColumn() var AcRow = AcCellRange.getRow() if (sheetname=="Questions/Réponses") { //Browser.msgBox(AcCol+'' / ''+AcRow) //liste d''instructions //Boucle si les colonne sont comprise dans le range if ((AcCol==3) || ((AcCol==7))){ //Browser.msgBox(AcCol) if (AcRow > 7){ //Browser.msgBox(AcRow) sendEmails() } } } else {} } function sendEmails() { Browser.msgBox(''SendEmails'') var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName(''ListCourriel''); Browser.msgBox(''SendEmails2'') var sheetDonnee = spreadsheet.getSheetByName(''Questions/Réponses''); var RangeProjet = sheetDonnee.getRange(1, 3) var NoProjet = RangeProjet.getValue() var RangeProjet = sheetDonnee.getRange(4, 3) var ProjName = RangeProjet.getValue() Browser.msgBox(''SendEmails3'') var startRow = 2; // First row of data to process var LastRows = sheet.getRange(1,4) var numRows = LastRows.getValue(); // Number of rows to process // Fetch the range of cells A2:B3 var dataRange = sheet.getRange(startRow, 1, numRows, 2) // Fetch values for each row in the Range. var data = dataRange.getValues(); Browser.msgBox(''SendEmails4'') //Permet d''aller cherche les info de la ligne active var ActiveCellRange = sheetDonnee.getActiveCell() var ActiveRows = ActiveCellRange.getRow() var NoLigne = sheetDonnee.getRange(ActiveRows,1) var sDep = sheetDonnee.getRange(ActiveRows,2) var sDate = sheetDonnee.getRange(ActiveRows,4) var sInitiale = sheetDonnee.getRange(ActiveRows,5) var sQuestion = sheetDonnee.getRange(ActiveRows,3) Browser.msgBox(''SendEmails5'') var rDate = sheetDonnee.getRange(ActiveRows,9) var rInitiale = sheetDonnee.getRange(ActiveRows,10) var rReponse = sheetDonnee.getRange(ActiveRows,7) Browser.msgBox(''SendEmails6'') var subject = ''Modif. Question/Réponse - Projet: (''+NoProjet+'') ''+ProjName; var message = "No Ligne : "+NoLigne.getValue()+String.fromCharCode(10)+String.fromCharCode(10)+"Reponsable : "+sInitiale.getValue()+String.fromCharCode(10)+"Date : "+sDate.getValue()+String.fromCharCode(10)+"Question : "+String.fromCharCode(10)+sQuestion.getValue()+String.fromCharCode(10)+String.fromCharCode(10)+"************************************"+String.fromCharCode(10)+String.fromCharCode(10)+"Reponsable : "+rInitiale.getValue()+String.fromCharCode(10)+"Date : "+rDate.getValue()+String.fromCharCode(10)+"Réponse : "+String.fromCharCode(10)+rReponse.getValue() //Browser.msgbox(subject) Browser.msgBox(''SendEmails7'') for (i in data) { Browser.msgBox(''SendEmails8'') var row = data[i]; var emailAddress = row[0]; // First column Browser.msgBox(''SendEmails9'') MailApp.sendEmail(emailAddress, subject, message); Browser.msgBox(''Email sent'') } }