【问题标题】:How do I associate a file with a key on google drive?如何将文件与谷歌驱动器上的密钥相关联?
【发布时间】:2021-01-20 18:45:05
【问题描述】:

我正在尝试自动化我公司的一个流程,我必须每月向我的客户发送文件。

这些文件是独一无二的,每个客户都必须收到自己的文件。此外,我希望客户必须回答 NPS 评估表才能访问他的文件。

老实说,我对编程不太了解,我只是想找到一种自动执行此操作的解决方案。

我今天想到的解决方案是使用谷歌表单,填写表单后,将提供一个链接以访问谷歌驱动器文件夹(这样客户就有义务回答表单才能访问到他的文件)。

在 google 驱动器中,每个文件都将与一个唯一的访问密钥相关联(例如,该客户的识别号,他已经知道它是什么)。

然后,这些客户应将此密钥插入 google 驱动器文件夹,以便能够访问他们的文件。这样我就能够:以单一形式获得评估的所有答案,向所有客户提供标准消息(或教程),告知他们如何访问他们的文件,并自动授予对文件的访问权限,因为访问每个月的密钥都是一样的。

抱歉,文字太长了,但我试图以最好的方式描述我的问题。我接受任何形式的帮助或指导。即使我可以得到帮助。这种自动化对我来说非常重要,因为除了自动化需要花费大量时间的流程之外,它还将为我提供一个非常强大的工具来评估我的服务。提前感谢所有花时间阅读此问题的人。

【问题讨论】:

  • 请格式化问题

标签: automation google-drive-api google-forms


【解决方案1】:

在这种情况下,最好的方法是从使用 Apps 脚本开始。

Apps Script 是一个功能强大的开发平台,可用于构建 Web 应用程序,并专门针对您的情况自动执行任务。它的特别之处在于它易于使用并易于创建与 G Suite 集成的应用程序。

由于您提到文件对于每个客户都是唯一的,因此您可以做的是将这些值存储在键值列表中。但是,根据客户的数量,您可以将这些值存储在电子表格中,类似于以下内容:

仅在提交上述 Google 表单后 使文件可用可以通过利用 Apps 脚本的触发器来完成。

所以本质上,您可以使用onFormSubmit 触发器,该触发器将在每次提交上述表单时执行。

代码

您还可以在电子表格中添加另一列来标记电子邮件是否已发送;考虑到这一点,您的电子表格将如下所示:

至于代码,这只是一个简短的 sn-p,它执行以下操作:

  • 打开电子表格并分别检索File IDCustomer EmailSent 列的值作为以下数组idsemailssent

  • 检索所需的表单并遍历响应并检查表单的最后一封电子邮件是否与电子表格中的任何电子邮件匹配;

  • 如果条件检查,文件权限被编辑,正在发送电子邮件,C列对应行被设置为TRUE

function editPermissions() {
   let form = FormApp.openById('FORM_ID');
   let sheet = SpreadsheetApp.openById('SPREADSHEET_ID').getSheetByName('SHEET_NAME');
   let responses = form.getResponses();
   let emails = sheet.getRange('EMAILS_RANGE').getValues();
   let ids = sheet.getRange('IDS_RANGE').getValues();
   let sent = sheet.getRange('SENT_RANGE').getValues();
   for (let i = responses.length; i > 0; i--) {
      let email = responses[i].getRespondentEmail();
      for (let j = 0; j < emails.length; j++) {
         if (emails[j][0] == email && sent[j][0] == false) {
            // edit file permissions
            // send email
            // mark the associated row on the Sent col with TRUE
         }
      }
   }
}

触发器

至于每次有新的表单提交时都运行上面的函数,你必须创建一个onFormSubmit触发器来触发函数的执行。

参考

【讨论】:

  • 我设法实施了您提出的建议,我要感谢您,对我帮助很大。现在我只是有一个问题。当我的脚本发送电子邮件时,它使用超过 1 个来自谷歌的每日电子邮件配额。即使一次只发送一封电子邮件(我在收件箱中检查过)。我在我的个人帐户中实现了该脚本并且它有效,一次只消耗 1 个电子邮件配额(但配额只有 100 个)。当我每次发送一封电子邮件复制到我的企业帐户(配额为 1,500)时,它会消耗大约 15 个单位的配额,有时配额会增加。你知道那可能是什么吗?
  • @GianFerreira,很高兴能帮到你!关于您的最后一个问题,在这种情况下最好的办法是发布一个新问题并添加您正在使用的代码。干杯! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多