如何使用App Scripts替换Google电子表格中的文字?

use*_*505 10 google-apps-script

我试图获取范围的值,然后从单元格中删除所有点.

var FILE = SpreadsheetApp.openById("xyz");
var CONTENT = FILE.getSheetByName("Sheet1");
var A1 = CONTENT.getRange("I17").getValue();
A1. replace(".", "");
Run Code Online (Sandbox Code Playgroud)

它让我无法找到替换功能.Google Apps脚本中是否有允许我替换字符串的功能?

dev*_*dev 16

如果这是你的脚本的精确副本,那么你之间有一个空间A1.,replace但我认为它不是.

@SergeInsas是正确的,内容需要是replace()函数工作的字符串,所以如果你试图替换.十进制数字,那么你可以先使用toString()下面的方法.

var FILE = SpreadsheetApp.openById("xyz");
var CONTENT = FILE.getSheetByName("Sheet1");
var A1 = CONTENT.getRange("I17").getValue();
var A1String = A1.toString().replace(".", "");
Run Code Online (Sandbox Code Playgroud)

或者你可以乘以数字来摆脱小数,但这将取决于你有多少小数位:)


ADW*_*ADW 5

有一种更强大、更简单的方法可用:TextFinder

这个问题的公认答案需要一个额外的步骤来将替换的字符串发布回单元格。

TextFinder 方法不需要您将数据写回单元格。

如果您想搜索多个单元格,则此方法可为您节省迭代次数。

  var FILE = SpreadsheetApp.openById("xyz");
  var CONTENT = FILE.getSheetByName("Sheet1");
  var A1 = CONTENT.getRange("I17");
  A1.createTextFinder(".").replaceAllWith("");
Run Code Online (Sandbox Code Playgroud)

我还没有在大型数据集上测试过它,但我怀疑这会很快。


编辑:我写了一个关于这个简短教程

  • 我刚刚在一个相当大的数据集上测试了它,并确认它比其他解决方案快得多。谢谢 ! (2认同)