我是Google Apps
的新手,我在重新格式化数据方面遇到了很多困难。
我构建了一个输出到Google Spreadsheet的表单。表格询问了6个问题,并询问了6个问题的5个问题。目前,输出显示30列数据。我想构建一个可以将其重新格式化为单个数据列表的Google Apps脚本,因此每次提交都会转换为6行宽的6行数据,而不是1行30列宽的数据。
作为补充调整,A列显示了提交日期,我希望它能够为该提交的每一行数据重复此操作。此外,每个提交最多可以有5个条目(每个条目6个数据),但它也可以只有1,2,3或4个。
以下是我正在使用的输出:
我认为公式应该是这样的:
Look at Column H
Find first instance where cell is not blank
Copy that and 6 cells over
Paste
Set the original copied cells to blank
i + 1
repeat
then repeat the entire process in Column M
then repeat the entire process in Column T
etc.
如果你有想法,请帮助我!
答案 0 :(得分:0)
使用“on form submit”触发器时,来自表单的数据也可用作变量,请参阅doc here about Spreadsheet Form Submit Events
您应该使用这些变量在第二张纸上构建所需的电子表格排列,同时将30列保留为原样...
最好的方法可能是使用适当的数据构建一个2D数组,并在此工作表中一次写入(也可以在另一个电子表格中......)
如果答案不为空,可以通过将数组5中的数据推送5来轻松设置
类似的东西(未经测试)
function formSubmit(e) {
var data = []
for(n=0;n<5;++n){
var row = []
if(e.values[3+n]!=''){ // if first element of serie n is not empty
for(c=0;c<6;++c){
row.push(e.values[3+n+c]);// build row n with 6 colums (0 to 5)
}
}else{continue}
data.push(row);// add row n to data (0 to 4)
}
SpreadsheetApp.getActiveSpreadsheet().getSheets()[1].getRange(1,1,data.length,data[0].length).setValues(data);// write data to sheet #2
}
编辑:我混淆了5和6,我改变了脚本来处理5行6个答案...对不起,如果你看到第一个版本; - )