我试图用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语句中的错误,它说我在那里设置的范围与数据不匹配。
我在这里做错什么了..?
有人能给我提供建议/建议吗?
发布于 2019-04-05 23:31:18
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
}注意:
参考文献:
如果这不是你想要的结果,我道歉。
https://stackoverflow.com/questions/55542750
复制相似问题