google-apps-script - 仅在提交 Google 表单后才允许从 Google 云端硬盘下载文件

标签 google-apps-script google-drive-api google-forms

我有一个使用 Jekyll 构建并托管在 Github 上的博客。在我的博客文章中,有时我需要分享一些存储在谷歌驱动器上的可下载文件。

目前,我想知道,有没有一种方法可以仅在填写并提交谷歌表单后才允许从谷歌驱动器下载文件。

谢谢

最佳答案

使用 Apps 脚本,您可以创建一个函数,该函数将在提交表单时运行,并执行以下操作:

  • 获取提交表单的用户的电子邮件地址。
  • 与此电子邮件地址共享所需的文件(此操作会自动向用户发送一封包含该文件链接的电子邮件)。
  • 您也可以向用户发送一封包含文件下载链接的自定义电子邮件。

为了使此函数在提交表单时运行,您必须安装 onFormSubmit 触发器。为此,在绑定(bind)到表单的脚本上,创建函数(我们称之为 shareLinkOnFormSubmit)并安装触发器,manuallyprogrammatically(通过复制并运行 this function - 您应该更改表单id 和函数名称)。

  • 接下来,函数 shareLinkOnFormSubmit 可能类似于下面的示例 - 检查内联注释:
function shareLinkOnFormSubmit(e) {
  var formResponse = e.response;
  var email = formResponse.getRespondentEmail(); // Get form respondent email address
  var fileId = "your-file-id"; // Get file id (change accordingly)
  var file = DriveApp.getFileById(fileId);
  file.addEditor(email); // Share the file with the respondent (edit access).
  var downloadUrl = file.getDownloadUrl(); // Get download URL (only works for non G-Suite documents)
  MailApp.sendEmail(email, "Your file link", downloadUrl); // Send email with download URL
}

注释:

  • Event objects 用于获取受访者电子邮件。请注意,仅当选择收集电子邮件地址选项时才会填充此电子邮件。
  • 在示例中,向用户授予编辑权限。如果您不希望用户能够编辑此内容,请使用 addCommenteraddViewer 而不是 addEditor
  • 方法 getDownloadUrl() 仅适用于非 G-Suite 文档。对于这些类型的文档,您应该构建下载链接,如 this answer 所示:

https://www.googleapis.com/drive/v3/files/{your-file-id}/export&mimeType={your-mime-type}

引用:

关于google-apps-script - 仅在提交 Google 表单后才允许从 Google 云端硬盘下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60901875/

相关文章:

forms - Google Script - 根据响应将新提交移动到另一个工作表

java - 如何从java应用程序外部运行google apps脚本

ios - 如何使用 Google Apps 在 Google 表单上请求数字小键盘?

google-api - 如何对 Google Drive API 中的文件触发病毒检查?

python - 如何使用 Google Drive API 通过服务帐户访问域中的共享文件?

google-apps-script - 提交时的 Google 表单

google-apps-script - 加载 Google 站点后自动运行 Google 应用程序脚本?

javascript - 如何提取多维数组中每个子数组的第一个元素?

google-apps-script - 使用 Google Drive API 时不触发 onChange 触发器