在代码中执行函数,将结果写入工作表

时间:2015-05-11 17:59:43

标签: google-apps-script google-docs

我在A1:A10

中有数据

需要使用“=”分隔符拆分数据。例如:

姓名=大力水手

职业=水手男

我可以在工作表级别通过在B1

范围内插入此函数来执行此操作
=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT("="&A3:A16,"^"&TRIM(REPT("=+[^=]+",COLUMN(OFFSET(A1,,,1,2))-1)&"=+([^=]+)")))))

(感谢AdamL的功能)

但是,我只想在代码中执行该功能,并用结果覆盖原始数据。

因此,如果我捕获变量中的值,例如......

var multiVals = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:A10").getValues();

如何将该函数应用于变量,以便我可以用该函数的结果覆盖A1:A10中的原始数据?

(当然,结果将在A1:B10范围内。因为每条记录只有一个“=”,所以需要“=”的两边。因此结果需要两列。

不过,顺便说一下,假设我只想要“=”右边的所有内容。在这种特殊情况下不需要这样做,但它对未来的参考肯定会有所帮助。 (我是在推动我的运气吗?)

1 个答案:

答案 0 :(得分:1)

您使用for循环并拆分字符串,或者如果第一个之后的所有内容都等于,则使用regEx。分裂将获得一切,直到一秒等于。

var bCol = [];
var currVal;
for( lin in multiVals ){
  currVal = multiVals[lin][0].split('=');
  bCol.push([currVal[0], currVal [1]]);
}
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:B10").setValues(bCol);

作为regEx,在第二列中等于所有之后:

var bCol = [];
var currVal;
for( lin in multiVals ){
   currVal = /^([^=]*)=(.*)/.exec(multiVals[lin][0]);
   bCol.push([currVal[1], currVal[2]])
}

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:B10").setValues(bCol);