使用GmailApp.sendEmail时访问被拒绝-缺少授权访问令牌

尽管我在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",}
  );

}

其他人似乎和我有同样的错误,但是他们可以用清单中的以下行来解决(不是我):

  

https://www.googleapis.com/auth/script.send_mail”,

我想念什么?

感谢帮助!

TYCandy 回答:使用GmailApp.sendEmail时访问被拒绝-缺少授权访问令牌

您正在使用两种不同的电子邮件发送范围:

  • “ ... // www.googleapis.com/auth/gmail.send”
  • “ ... // www.googleapis.com/auth/script.send_mail”

范围:

“ ... // www.googleapis.com/auth/script.send_mail”

仅用于MailApp类。您正在使用GmailApp类。

您不应同时使用两个电子邮件发送范围。 MailApp类在访问用户数据方面受到更多限制。它所能做的就是发送电子邮件。

如果通过从GmailApp更改为MailApp消除了错误,那么我猜这两个范围存在某种冲突。

本文链接:https://www.f2er.com/3130090.html

大家都在问