在脚本编辑器中批准的应用程序脚本电子邮件权限,但不在表单中?

时间:2016-01-07 01:35:38

标签: oauth google-apps-script google-sheets gmail google-spreadsheet-api

我正在使用Google Enterprise(如果有所不同)。

我制作了一个包含非常短的脚本的电子表格,只有两个函数,一个计算我称为unread_emails()的未读gmail邮件的数量,以及一个将当前时间复制到的onOpen()脚本一个电子表格单元格(所以我知道它正在运行),然后调用第一个函数并将其结果复制到电子表格。

当我第一次从脚本编辑器运行它时,它询问了我的权限,我点击了没关系。从那时起,如果我从脚本编辑器启动脚本,脚本总是运行得很好,并且不再需要权限。 BUT - 如果我只是打开电子表格,onOpen()函数将在getInboxUnreadCount()的权限错误中途停止 - 即使我已经给予许可,它显然在我的帐户上运行(不,它不会要求我只是重新确认我的权限)。如果我重新打开脚本编辑器,一切运行正常。

如何让Google表格识别此处已分配的权限? 我们将非常感谢任何见解。

这是简单的脚本。第3行的GmailApp是明显的麻烦来源。

function unread_mails() {
  Logger.log("starting unanswered func");
  return GmailApp.getInboxUnreadCount();
}

function onOpen() {
  Logger.log("starting onOpen func");
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheets()[0];
  var d = new Date();
  sheet.getRange("B4").setValue(0); // clear
  sheet.getRange('B2').setValue(d.toLocaleTimeString());
  sheet.getRange("B4").setValue(unread_mails());
}

1 个答案:

答案 0 :(得分:1)

来自simple trigger restrictions

  

他们无法访问需要授权的服务。例如,a   简单的触发器无法发送电子邮件,因为Gmail服务需要   授权

它可以在编辑器中运行,手动运行onOpen()的b / c与自动触发简单触发器相同