3

我正在尝试使用以下谷歌脚本发送一封邮件,并附上我的谷歌驱动器中可用的文件

var file=DriveApp.getFileById('1qZVK0UZ1jLbDdj10FXZqeAVEodvxEy2Bs');
MailApp.sendEmail('xyz@gmail.com','subject','body',{attachments[file.getAs(MimeType.PDF)]});

当我手动运行上面的脚本时,它运行良好,电子邮件被发送。但是当我使用表单提交触发器运行它时,它会给出错误“您无权调用 openById”

会重现问题的步骤?

  1. 创建一个谷歌表单。
  2. 在脚本编辑器上编写上述脚本并添加一个提交表单的触发器。
  3. 填写并提交表格,然后您将收到来自“apps-scripts-notifications@google.com”的邮件中的上述错误

请帮忙。

4

2 回答 2

3

我遇到了同样的问题,但觉得必须使用 FormResponses Sheet 来获取提交事件有点愚蠢(我的意思是 Form Apps Scripts 上有一个触发器是有原因的,对吧?)。

我所要做的就是删除并重新添加From form --> On form submit的触发器。当我添加它时,向我挑战 OAuth 权限以查看和使用我的谷歌驱动器。

紧接着,我能够再次在 Forms Apps Script Submission 触发器上运行。

于 2015-05-14T23:06:57.567 回答
2

我在表单本身上创建脚本时发现了这一点。

为了解决这个问题,首先让您形成发送到电子表格的响应。

从您的表格转到工具>脚本编辑器...复制您的脚本并删除您在那里设置的任何触发器,您将不再需要此脚本。

现在单击表单中的查看回复按钮以打开电子表格。

  • 转到工具 > 脚本编辑器...(用于电子表格)。
  • 您应该从一个空白项目开始。
  • 删除其中的任何内容并粘贴到您的脚本中。
  • 保存并命名您的项目。

现在正常设置触发器。您会发现新触发器的第三个下拉列表具有On form submit选项。

一旦您的脚本在提交表单时获得授权,该事件将触发并可以访问 DriveApp。

一旦您测试并使其正常工作,我将返回表单并删除其中的脚本项目。我这样做是为了让事情保持整洁并避免混淆,如果我稍后来更改脚本并且忘记了哪个是实际直播的。

我不知道谷歌表单是否存在限制他们访问云端硬盘或其他东西的限制。

于 2014-05-14T09:32:01.343 回答