Wenn ich etwas in meiner Tabelle ändern, wird der onEdit()
Trigger ausgeführt, und ich kann alle msgbox sehen, die ich in meinen Code eingegeben habe.MailApp.sendEmail Fehlermeldung - "habe keine Berechtigung, sendEmail zu rufen"
Meine Funktion stoppt an dieser Linie
MailApp.sendEmail(emailAddress, subject, message);
ich nie die Nachricht ‚gesendet E-Mail!‘ Sehen, und einen Fehler bei der Ausführung TRANSCRIPT erhalten:
Sie haben keine Berechtigung zu nennen sendemail
Wenn ich das Skript direkt im Script-Editor ausführen, funktioniert alles einwandfrei ...
Hier ist mein Code:
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')
}
}
Wenn Sie 'Browser.msgBox()' zum Debuggen verwenden, gibt es eine andere Option. Sie können 'Logger.log() 'verwenden, den Code ausführen und dann die LOGS ANZEIGEN. –
Haben Sie das Ausführungstranskript angezeigt? Was sagt es am Ende? –
Verwenden Sie den Debugger, und legen Sie in der Zeile "MailApp.sendEmail()" einen Unterbrechungspunkt fest. Führen Sie anschließend den Debugger aus. Wenn der Code angehalten wird, zeigen Sie die Werte für "emailAddress, Betreff, Nachricht" an. Was sind Sie? [Google-Dokumentation - Unterbrechungspunkte] (https://developers.google.com/apps-script/troubleshooting#using_the_debugger_and_breakpoints) –