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
.
Esta pregunta ya tiene una respuesta aquí:
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'')
}
}