首先,在开始编写代码之前,您需要做出一些选择。
-
您想修改接受表单输入的电子表格,还是生成一个包含修改数据的单独工作表?如果你想记录用户实际输入的内容,最好不要使用原始数据。如果你使用第二张纸来处理按摩输出,那么多个选项卡的存在可能会让你的用户感到困惑,除非你采取措施隐藏它。
-
你想在表单进入时进行修改,还是在之后的某个时候(批量)进行修改?如果您已经收集了数据,则必须进行批量处理,这将涉及循环和处理中间插入的新行。要在表单进入时处理表单,您需要设置一个由表单提交触发的函数,并且只需进一步向下扩展表。。。但你还有更多的学习要做-看
Container-Specific Triggers
,
Understanding Triggers
和
Understanding Events
获取背景信息。
-
您主要使用电子表格服务功能还是javascript数组?这种选择通常与速度有关——在javascript中做得越多,脚本就越快,但在两者之间切换一开始可能会令人困惑。
下面是一个进行批量处理的示例函数。它将所有现有数据读取到一个数组中,然后遍历这些数据,并将所有行复制到一个新数组中,将多个名称扩展到多行中。完成后,将覆盖现有图纸数据。(注意-未调试或测试。)
function bulkProcess() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataIn = ss.getDataRange().getValues();
var dataOut = [];
for (var row in dataIn) { // Could use: for (var row = 0; row < dataIn.length; row++)
var names = dataIn[row][1].split(','); // array of names in second column
var rowOut = dataIn[row];
for (var i in names) {
rowOut[1] = names[i]; // overwrite with single name
dataOut.push(rowOut); // then copy to dataOut array
}
}
// Write the updated array back to spreadsheet, overwriting existing values.
ss.getRange(1,1,dataOut.length,dataOut[0].length).setValues(dataOut);
}