Google脚本错误:您无权调用openById

时间:2014-03-26 14:31:57

标签: google-apps-script

我正在尝试使用以下google脚本发送附有我的Google云端硬盘中可用文件的邮件

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

当我手动运行上面的脚本时,它运行正常,电子邮件被发送。但是当我使用表单提交触发器运行它时会出现错误"您没有权限调用openById"

会重现问题的步骤?

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

    请帮忙。

2 个答案:

答案 0 :(得分:2)

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

要首先解决问题,请将表单的响应发送到电子表格。

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

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

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

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

在提交表单后,只要您的脚本获得授权,该事件就会触发,并且可以访问DriveApp。

一旦你测试并使它工作,我会回到表单并删除那里的脚本项目。我这样做是为了保持整洁,如果我以后改变剧本并忘记哪一个实际上是活着的话,可以避免混淆。

我不知道Google表单是否存在限制他们访问云端硬盘或其他内容的限制。

答案 1 :(得分:2)

我遇到了同样的问题,但觉得必须使用FormResponses Sheet来获取提交事件有点傻(我的意思是在桌面应用程序脚本上有一个触发因为某个原因,对吧?)

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

在此之后,我又能够再次运行Forms Apps脚本提交触发器。