更新 2:这是一个权限问题。我想我必须为每个电子表格复制我的所有脚本?既然我已经修复了代码,我也会更新我的代码。
更新:我的代码是错误的(我认为我需要删除第二个 for 循环)但我的问题是为什么脚本没有在我的工作表上运行。
我正在尝试将数据写入电子表格中的列。也许我只是遇到了权限问题?
这是我第一次使用 Google 脚本,我也不熟悉 JavaScript。我有一个包含大量数据的电子表格,我成功地删除了通过比较前两列定义的重复项——没有错误,没有问题,第一次尝试成功运行。现在,我正尝试在两个新的空列中填充数据。
如果第 2 列的格式为“foo - bar”,我希望第 3 列为“foo”,第 4 列为“bar”。所以我写了这个脚本:
function parseTypes() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for (i in data) {
var row = data[i];
var str = row[2];
var strSplit = str.split(" - ");
row[3] = strSplit[0];
if (strSplit[1] == "" || strSplit[1] == null || row[4] == undefined) {
row[4] = "";
} else {
row[4] = strSplit[1];
}
newData.push(row);
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
我进行了调试,字符串数组 strSplit 被准确地设置为“foo,bar”。我的问题是它实际上并没有将数据写入我的电子表格。我不知道这是我的代码还是我只是运行脚本错误,因为我几乎不知道自己在做什么。
最佳答案
JavaScript 使用基于 0 的索引,而 SpreadsheetApp 使用基于 1 的索引。这意味着行 [2] 返回 C 列而不是 B 列的值。
关于javascript - 简单的 Google 脚本和 Google 电子表格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980104/