Javascript 简单谷歌脚本和谷歌电子表格的问题

Javascript 简单谷歌脚本和谷歌电子表格的问题,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,更新2:这是一个权限问题。我想我必须为每个电子表格复制所有脚本?而且,我正在更新我的代码,因为我已经修复了它 更新:我的代码错了(我想我需要删除第二个for循环),但我的问题是为什么脚本没有在我的工作表上运行 我正在尝试将数据写入电子表格中的列。也许我只是有权限问题 这是我第一次使用谷歌脚本,我也不熟悉JavaScript。我有一个包含大量数据的电子表格,通过比较前两列,我成功地删除了重复项——没有错误,没有问题,第一次尝试成功运行。现在我尝试在两个新的空列上填充数据 如果第2列的格式为“foo

更新2:这是一个权限问题。我想我必须为每个电子表格复制所有脚本?而且,我正在更新我的代码,因为我已经修复了它

更新:我的代码错了(我想我需要删除第二个for循环),但我的问题是为什么脚本没有在我的工作表上运行

我正在尝试将数据写入电子表格中的列。也许我只是有权限问题

这是我第一次使用谷歌脚本,我也不熟悉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列的值。

您不必复制脚本。您唯一需要更改的是不使用SpreadsheetApp.getActiveSheet,而是必须使用SpreadsheetApp.openByUrl(“”).getSheetByName('blalala')方法。这样你就不必复制它了。希望这能有所帮助。

关于权限问题,当您显示正在使用脚本的情况时,它将帮助用户思考解决方案。如果要拆分第2列的值,请从
row[index]
newData[j][index]
的各自索引中减去1。因为虽然数组的索引从0开始,但范围从1开始。@Tanaike我修复了我的代码。现在一切都正常了。感谢您提供的更多信息。我很高兴你的问题解决了,那不是问题所在。我想出来了。