尽管我在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,}
);
}
其他人似乎和我有同样的错误,但是他们可以用清单中的以下行来解决(不是我):
我想念什么?
感谢帮助!
答案 0 :(得分:1)
您正在使用两种不同的电子邮件发送范围:
范围:
“ ... // www.googleapis.com/auth/script.send_mail”
仅用于MailApp类。您正在使用GmailApp类。
您不应同时使用两个电子邮件发送范围。 MailApp类在访问用户数据方面受到更多限制。它所能做的就是发送电子邮件。
如果通过从GmailApp更改为MailApp消除了错误,那么我猜这两个范围存在某种冲突。