使用可安装触发器时的无限授权循环

时间:2019-07-04 16:57:55

标签: google-apps-script web-applications

一个简单的Web应用程序应该每小时发送一封静态电子邮件。我使用可安装的触发器来完成此操作。首次调用Web应用程序时,要求用户授权Web应用程序。但是,授权后,将要求脚本以无限循环的方式重新授权。如何避免这种情况?

function doGet(e) {
  var params = JSON.stringify(e);

    ScriptApp.newTrigger('email')
      .timeBased()
      .everyHours(1)
      .create();

  return HtmlService.createHtmlOutput('looks like it worked');

  }

function email(){  GmailApp.sendEmail('test@example.com', 'Subject line', "works");}

我希望脚本一次请求授权,然后将触发器安装在授权用户下并每小时发送一次电子邮件

1 个答案:

答案 0 :(得分:1)

尝试一下:

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}
function doGet(e) {
  var params = JSON.stringify(e);
  if(!isTrigger('email')) {
    ScriptApp.newTrigger('email').timeBased().everyHours(1).create();
  }
  return HtmlService.createHtmlOutput('looks like it worked');

}