需要脚本在电子表格中的所有行中使用逗号分隔值,并使用基于搜索的第二个电子表格中的值替换

时间:2013-03-13 20:18:42

标签: google-apps-script google-calendar-api google-sheets google-spreadsheet-api

我正在创建日历/日程安排资源。用户在Google表单中输入所有日历/事件数据。每次提交表单时,数据都会填充到“表单响应”电子表格中,其中会创建一个新行。在电子表格中,电子表格所有者可以运行脚本来创建Google日历条目。

在通过Google表单收集的数据中,用户可以从100多个日历中进行选择,他希望在其中显示他的活动信息。因此,例如,他可以从100多个日历列表中选择日历名称,例如“Apple”,“Pear”,“Watermelon”和“Orange”。在电子表格中,这些选项将以逗号分隔的列表显示:apple,pear,watermelon,orange。

在单独的“资源”电子表格中,我有两列。第1列包含上述日历名称,第2列包含相应的Google日历资源地址。

COL A

A1 Apple

A2梨

A3西瓜

A4 Orange

COL B.

B1 domain.com_190382d0931@resource.calendar.google.com

B2 domain.com_928313sdf98@resource.calendar.google.com

B3 domain.com_239829a3l18@resource.calendar.google.com

B4 domain.com_295801a0181@resource.calendar.google.com

我需要一个脚本,在“表单响应”电子表格中读取用户提交的日历名称数据,在“资源”电子表格中搜索相同的数据,并以逗号分隔值的形式返回替换的Google日历资源地址。 “表单回复”电子表格中的指定列。

实施例:

用户1提交他想要在日历“Pear”和“Apple”上预订活动的数据

用户2提交他想在日历“Orange”和“Apple”上预订活动的数据

用户3提交他想要在日历“Pear”,“Apple”和“Orange”上预订活动的数据

在“表单响应”电子表格中,创建了三行数据。一列包含每次提交的日历数据。

所以:

J2包含Pear,Apple

J3包含Orange,Apple

J4包含Pear,Apple,Orange

我希望在“表单响应”电子表格末尾的列中填充资源等价物,从“资源”电子表格中提取。

所以:

Z2包含domain.com_928313sdf98@resource.calendar.google.com,domain.com_190382d0931@resource.calendar.google.com

Z3包含domain.com_295801a0181@resource.calendar.google.com,domain.com_190382d0931@resource.calendar.google.com

Z4包含domain.com_928313sdf98@resource.calendar.google.com,domain.com_190382d0931@resource.calendar.google.com, domain.com_295801a0181@resource.calendar.google.com

1 个答案:

答案 0 :(得分:0)

使用数组管理非常简单。

  1. 使用逗号分隔值取出单元格并将其拆分为逗号(这是默认的拆分元素)。例如:var calNamestoWrite = cell.split(',');,您将获得一组n元素
  2. 使用getValues()读取第二张图,以便获得与sheet2中的行一样多的元素的2D数组。 例如:var calNames = ss.sheet2.getDataRange().getValues();
  3. 然后在双循环中,您只需通过比较

    来检查日历名称
    if(calNamestoWrite[n]==calNames[c][0]){ var calID = calNames[c][1] ... and do the other stuf...}
    

    因为第一列是名称,第二列是日历资源ID。

    n迭代calNamestoWrite数组,c从sheet2迭代数组。

    etvoilà,这将花费你几分钟的时间来写。