我遇到了两个独立方需要访问相同数据的情况,但是使用数据的后端需要不同的格式,例如:一方需要看“足球”,另一方需要看“1”。 此输入来自各种用户通过Google表单。
我之前运行了一个时间间隔脚本,它将复制工作表1中的所有数据,然后将其复制到工作表2,然后双循环将踢(使用var i)来搜索所有列并替换工作表2上的特定字符串用数值。 这个脚本有效,但由于效率低下,一旦我开始拥有更多数据,它就会崩溃。
所以我试图通过处理来自每个表单提交的数据来减少数据集。 我尝试了两种不同的方法: 1)抓取值以复制,修改值,然后复制到新工作表 2)抓取值进行复制,复制到新工作表,然后修改这些新值(lastrow)
我知道复制位在我编写的两个脚本中都有效,但我的修改没有,当使用调试器时,它显示修改后的数据与原始数据相同,这实际上是复制相同的情况。 我意识到我可能犯了一个非常基本的错误,但我对它是什么一无所知。在Stackoverflow和其他网站上搜索类似的线程我没有达成解决方案。
当前代码:
function onFormSubmit(e){
var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var projects = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var row = responses.getLastRow();
var col = responses.getLastColumn();
var copy = responses.getRange(row, 1, 1, col)
var modify = copy.getValues();
for (var i=0; i < modify.length; i++){
if (modify [i] == "SearchString1"){
modify [i] = "1";
}
else if (modify [i] == "SearchString2"){
modify [i] = "0";
}
else if (modify [i] == "SearchString3"){
modify [i] = "1";
}
projects.appendRow(modify);
}
}
此代码将复制数据,但不会对其进行修改。 我有一个变体,我使用.setvalues,但结果相同。
答案 0 :(得分:0)
解决了,所有关于位置标识符。 getvalues创建了一个double数组,append在循环中而不是在它之外。我必须更好地指定附加和修改。
固定代码:
for (var i=0; i < modify[0].length; i++){
if (modify[0][i] == "SearchString1"){
modify[0][i] = "1";
}
else if (modify[0][i] == "SearchString2"){
modify[0][i] = "0";
}
else if (modify[0][i] == "SearchString3"){
modify[0][i] = "1";
}
}
projects.appendRow(modify[0]);
}