繁体   English   中英

Google Script 错误:您无权调用 openById

[英]Google Script Error: You do not have permission to call openById

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

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”的邮件

请帮忙。

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

要解决该问题,您首先需要将回复发送到电子表格。

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

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

  • (for the spreadsheet).转到 (对于电子表格)。
  • 您应该从一个空白项目开始。
  • 删除其中的任何内容并粘贴到您的脚本中。
  • 保存并命名您的项目。

现在像往常一样设置触发器。 .您会发现新触发器的第三个下拉列表具有选项。

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

一旦你测试并让它工作,我会回到表单并删除那里的脚本项目。 我这样做是为了让事情保持整洁并避免混乱,如果我以后来更改脚本并且忘记了哪个实际是实时的。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM