我正在尝试使用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语句中遇到错误 说我在此处设置的范围与数据不符
我在做什么错..?
有人可以向我提供建议吗?
答案 0 :(得分:0)
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
}
如果这不是您想要的结果,我表示歉意。