如何将文件与 google 驱动器上的密钥相关联?
How do I associate a file with a key on google drive?
我正在尝试在我的公司实现一个流程的自动化,我必须每月向我的客户发送文件。
这些文件是独一无二的,每个客户都必须收到自己的文件。此外,我希望客户必须回答 NPS 评估表才能访问他的文件。
老实说,我不太了解编程,我只是想找到一个自动执行此操作的解决方案。
我今天想到的解决方案是使用 google 表格,填写表格后 link 将可用于访问 google 驱动器文件夹(这样客户就必须回答表格才能访问他的文件)。
在 google 驱动器中,每个文件都与一个唯一的访问密钥相关联(例如,该客户的标识号,他已经知道它是什么)。
然后这些客户应将此密钥插入 google 驱动器文件夹中,以便能够访问他们的文件。这样我就能够:以单一形式获得所有评估答案,向所有客户提供标准消息(或教程),通知他们如何访问他们的文件,并自动授予对文件的访问权限,因为访问密钥每个月都一样。
抱歉,文字太长了,但我已尽力以最好的方式描述我的问题。我正在接受任何形式的帮助或指导。甚至在我可以获得帮助的地方。这种自动化对我来说非常重要,因为除了自动化需要花费大量时间的流程之外,它还会为我提供一个非常强大的工具来评估我的服务。预先感谢所有花时间阅读此问题的人。
在这种情况下,最好的方法是从使用 Apps 脚本开始。
Apps Script 是一个功能强大的开发平台,可用于构建网络应用程序,并专门针对您的情况自动执行任务。它的特别之处在于它易于使用和创建与 G Suite 集成的应用程序。
由于您提到每个客户的文件都是唯一的,您可以做的是将这些值存储在一个键值列表中。但是,根据客户数量,您可以将这些值存储在电子表格中,类似于:
仅在 提交提到的 Google 表单后才可以使用 Apps 脚本的触发器。
所以基本上,您可以使用一个 onFormSubmit
触发器,它会在每次提交上述表单时执行。
代码
您还可以在电子表格中添加另一列来标记电子邮件是否已发送;考虑到这一点,您的电子表格将如下所示:
至于代码,这只是执行以下操作的一小段代码:
打开电子表格并检索 File ID
、Customer Email
和 Sent
列的值作为以下数组 ids
、emails
和 sent
分别;
检索所需的表单并遍历响应并检查表单的最后一封电子邮件是否与电子表格中的任何电子邮件相匹配;
如果条件检查,编辑文件权限,发送电子邮件,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
触发器来触发函数的执行。
参考
我正在尝试在我的公司实现一个流程的自动化,我必须每月向我的客户发送文件。
这些文件是独一无二的,每个客户都必须收到自己的文件。此外,我希望客户必须回答 NPS 评估表才能访问他的文件。
老实说,我不太了解编程,我只是想找到一个自动执行此操作的解决方案。
我今天想到的解决方案是使用 google 表格,填写表格后 link 将可用于访问 google 驱动器文件夹(这样客户就必须回答表格才能访问他的文件)。
在 google 驱动器中,每个文件都与一个唯一的访问密钥相关联(例如,该客户的标识号,他已经知道它是什么)。
然后这些客户应将此密钥插入 google 驱动器文件夹中,以便能够访问他们的文件。这样我就能够:以单一形式获得所有评估答案,向所有客户提供标准消息(或教程),通知他们如何访问他们的文件,并自动授予对文件的访问权限,因为访问密钥每个月都一样。
抱歉,文字太长了,但我已尽力以最好的方式描述我的问题。我正在接受任何形式的帮助或指导。甚至在我可以获得帮助的地方。这种自动化对我来说非常重要,因为除了自动化需要花费大量时间的流程之外,它还会为我提供一个非常强大的工具来评估我的服务。预先感谢所有花时间阅读此问题的人。
在这种情况下,最好的方法是从使用 Apps 脚本开始。
Apps Script 是一个功能强大的开发平台,可用于构建网络应用程序,并专门针对您的情况自动执行任务。它的特别之处在于它易于使用和创建与 G Suite 集成的应用程序。
由于您提到每个客户的文件都是唯一的,您可以做的是将这些值存储在一个键值列表中。但是,根据客户数量,您可以将这些值存储在电子表格中,类似于:
仅在 提交提到的 Google 表单后才可以使用 Apps 脚本的触发器。
所以基本上,您可以使用一个 onFormSubmit
触发器,它会在每次提交上述表单时执行。
代码
您还可以在电子表格中添加另一列来标记电子邮件是否已发送;考虑到这一点,您的电子表格将如下所示:
至于代码,这只是执行以下操作的一小段代码:
打开电子表格并检索
File ID
、Customer Email
和Sent
列的值作为以下数组ids
、emails
和sent
分别;检索所需的表单并遍历响应并检查表单的最后一封电子邮件是否与电子表格中的任何电子邮件相匹配;
如果条件检查,编辑文件权限,发送电子邮件,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
触发器来触发函数的执行。