Несмотря на то, что я добавил в свой манифест следующие oauthscopes, я все еще получаю следующую ошибку при запуске метода GmailApp.sendEmail:
Access denied:: Missing access token for authorization. Request: MailboxService.SendMessage
Мой манифест выглядит так:
"oauthScopes": [
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/spreadsheets.currentonly",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/gmail.compose",
"https://www.googleapis.com/auth/gmail.addons.current.action.compose",
"https://www.googleapis.com/auth/script.send_mail",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/gmail.modify" ],
Вот код:
function main_Capitations() {
var cell_col_number = "";
var cell_row_number = "";
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('2019-2020');
//ss.setActiveSelection('A3');
ss.getRange('A3').activate();
// Get active cell and get value of it
var cell = ss.getCurrentCell();
var cellValue = cell.getValue();
// Start the loop
while (cellValue != ""){
cellValue = cell.getValue();
if (cellValue != "") {
//Browser.msgBox("Row: " + cell.getRow() + " Column: " + cell.getColumn() + "Valeur : " + cellValue);
var infos_user = {};
infos_user.prenom = sheet.getRange(cell.getRow(),cell.getColumn()+2).getValue();
infos_user.mail = sheet.getRange(cell.getRow(),cell.getColumn()+3).getValue();
infos_user.solde_a_payer = sheet.getRange(cell.getRow(),cell.getColumn()+8).getValue();
Logger.log('infos_user.prenom: ' + infos_user.prenom);
Logger.log('infos_user.mail: ' + infos_user.mail);
Logger.log('infos_user.solde_a_payer: ' + infos_user.solde_a_payer);
if (sheet.getRange(cell.getRow(),cell.getColumn()+9).isChecked() == false) {
sendmail_paiement(infos_user);
}
};
cell = cell.offset(1, 0);
Logger.log('infos_user.mail: ' + cell.getValue());
};
var infos_globales = {};
infos_globales.solde_global = sheet.getRange(cell.getRow()-1,cell.getColumn()+8).getValue();
infos_globales.nb_frere_hospitalier = sheet.getRange(cell.getRow()-1,cell.getColumn()+9).getValue();
infos_globales.nb_frere_retard =sheet.getRange(cell.getRow()-1,cell.getColumn()+10).getValue();
Logger.log('infos_globales.solde_global ' + infos_globales.solde_global);
Logger.log('infos_globales.nb_frere_hospitalier ' + infos_globales.nb_frere_hospitalier);
Logger.log('infos_globales.nb_frere_retard ' + infos_globales.nb_frere_retard );
sendmail_synopsis(infos_globales);
}
function sendmail_paiement(infos_user) {
var templ = HtmlService
//.createTemplateFromFile('tpl_mail_traditionnel');
.createTemplateFromFile('tpl_test');
//.createTemplateFromFile('tpl_mail_exceptionnel');
templ.infos_user = infos_user;
var message = templ.evaluate().getContent();
//Browser.msgBox(infos_user.mail);
if (infos_user.solde_a_payer>0) {
GmailApp.sendEmail(
infos_user.mail,
"Rappel de capitations",
'',
{htmlBody: message,}
);
}
}
function sendmail_synopsis(infos_globales) {
var templ = HtmlService
.createTemplateFromFile('mail_synopsis_template');
templ.infos_globales = infos_globales;
var message = templ.evaluate().getContent();
GmailApp.sendEmail(
'zzzxxxyyy@gmail.com',
"Résumé de la trésorerie du Gaïac",
'',
{htmlBody: message,}
);
}
Похоже, что некоторые другие люди имели ту же ошибку, что и я, но они могли бы ее решить (не я) с помощью следующей строки в манифесте:
"https://www.googleapis.com/auth/script.send_mail",
Что я пропустил ??
Спасибо за помощь!