【问题标题】:Google Apps Script: create sequential IDGoogle Apps 脚本:创建顺序 ID
【发布时间】:2016-03-17 00:13:44
【问题描述】:

我使用 Google 电子表格作为基本数据库。这里讨论的一对多关系是“Leads”表和“Comms”表。每个潜在客户都可以进行多次通信(电子邮件、推文、电话等)

当用户填写 Google 表单时,我有一个脚本,可以将相关表单表中的一些数据插入到“潜在客户”表中,并向用户发送电子邮件:

function formSubmitReply(e) {
 srcSheet.getRange(srcLastRow, 1).copyTo(leadsSheet.getRange(leadsLastRow + 1, 1));     // Copy timestamp
 srcSheet.getRange(srcLastRow, 6).copyTo(leadsSheet.getRange(leadsLastRow + 1, 5));     // Copy first name
 srcSheet.getRange(srcLastRow, 7).copyTo(leadsSheet.getRange(leadsLastRow + 1, 6));     // Copy surname
 leadsSheet.getRange(leadsLastRow + 1, 3).setValue("Web - Unknown");                    // Mark as WEB lead
 leadsSheet.getRange(leadsLastRow + 1, 4).setValue("New");                              // Set status to NEW
 // Email the user ...
}

我还想生成一个 ID,以便将通信与给定的潜在客户联系起来。最好的方法是什么?到目前为止,我想到的想法包括生成一个很长的 GUID,或者使用顺序 ID,例如L1、L2、L3 等

出于可读性和更好地洞察数据的考虑,我更喜欢后一种想法,但是

a) 我将使用什么代码来查找带有 L 前缀的最后一个 ID,并将其递增?

b) 在我重新排序工作表的情况下,防止错误增加 ID 的最佳方法是什么?

【问题讨论】:

  • 如果您根据日期和时间创建一个ID,则永远不会有重复的ID,您无需搜索最后一个ID。这毫秒的时间不会再次发生。如果您遇到很多用户可能“同时”提交数据的情况,那么您可以使用 LockService(无论如何都应该使用)来确保一段代码不会最终同时运行。跨度>

标签: google-apps-script google-sheets


【解决方案1】:

每个响应都有一个时间戳。您可以将其用作响应 ID。

另一种选择是在编辑响应 URL 中使用 response_id。

响应 URL 如下所示

https://docs.google.com/forms/d/0awKpg_finiay86360kNXrcjihl36azP3DJEaZqXDY7A/viewform?edit2=2_ABaOmuk-sIHc2HrfDJO6d8CsST-Te-5ib2l0uFknhPt0DyjM3YhSXEkEtyirN8l

response_id 是edit2= 之后的字符串,所以对于上面的例子,response_id 是

2_ABaOmuk-sIHc2HrfDJO6d8CsST-Te-5ib2l0uFknhPt0DyjM3YhSXEkEtyirN8l

要获取唯一的响应 URL,请使用 FormResponse.getResponseUrl

【讨论】:

  • 绝对是一个很好的回应。我的错,但我应该提到我想标准化为不附加表单的不同工作表创建 ID 的方法,例如一个帐户表、一个任务表等。所以我将有 L1、L2、L3 用于潜在客户,而 A1、A2、A3 用于帐户。任何其他想法都非常感谢!
  • 谢谢。关于“缺失的要求”,考虑发布一个包含所有重要细节的新问题。
猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2014-11-16
  • 1970-01-01
相关资源
最近更新 更多