Google表格脚本编辑器-数组的setValues

时间:2019-04-05 20:15:00

标签: javascript google-sheets

我正在尝试使用Google表格脚本中的setValues将旧值替换为新值。

数据在下面的链接中...

https://docs.google.com/spreadsheets/d/1pSUVkxM9FhSNgizedHbY2MnYGTnC2iiYLfrWsoPmDks/edit?usp=sharing

我基本上是想删除“跟踪器”列下的前14个字符和后12个字符

下面是我尝试的代码。

function URLReplacement() {
  var ss =  SpreadsheetApp.getActive().getSheetByName("transformer");
  var rng = ss.getRange("G:G");
  var data = rng.getValues();
  for (var items in data)
  {
    var newer = data[items][0].substring(14)
    // Turn these strings into an array
    var newerr = newer.split(" ")
    // Turn this into 2 dimensional array to use setValues

    ss.getRange("G:G").setValues([newerr])

  Logger.log([newer]);
}
}

但是现在,我在setValues语句中遇到错误 说我在此处设置的范围与数据不符

我在做什么错..?

有人可以向我提供建议吗?

1 个答案:

答案 0 :(得分:0)

  • 您希望在“ G”列将IMAGE_SUFFIX_"http://google.com"<xxxnouse>"转换为http://google.com
  • IMAGE_SUFFIX_"http://google.com"<xxxnouse>"的格式是恒定的。

如果我的理解是正确的,那么该修改如何?错误的原因是[newer]不是使用setValues()的二维数组。如果已消除此错误,则通过覆盖空值来除去标题。所以我想作如下修改。

修改点:

  • 使用getLastRow()时,可以从“ G:G”检索到的数据大小减小。这样,可以降低处理成本。
  • getRange(2, 7, ss.getLastRow(), 1)无法检索标头。
  • IMAGE_SUFFIX_"http://google.com"<xxxnouse>"的格式开始,使用split()来解析此值。
  • 转换后的数据由setValues()放入。这样,还可以降低处理成本。

修改后的脚本:

function URLReplacement() {
  var ss =  SpreadsheetApp.getActive().getSheetByName("transformer");
  var rng = ss.getRange(2, 7, ss.getLastRow(), 1); // Modified
  var data = rng.getValues();
  var convertedData = data.map(function(e) {return e[0] ? [e[0].split('"')[1]] : e}); // Added
  rng.setValues(convertedData); // Added
}

注意:

  • 在共享的示例电子表格中,工作表名称为“ Sheet1”。但是您的脚本使用“ transformer”作为工作表名称。请注意这一点。
  • 如果电子表格中的实际值格式与共享电子表格中的格式不同,则可能无法使用。

参考文献:

如果这不是您想要的结果,我表示歉意。