Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用应用程序脚本替换Google电子表格中的文本?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何使用应用程序脚本替换Google电子表格中的文本?

Google apps script 如何使用应用程序脚本替换Google电子表格中的文本?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我尝试获取范围的值,然后从单元格中删除所有点 var FILE = SpreadsheetApp.openById("xyz"); var CONTENT = FILE.getSheetByName("Sheet1"); var A1 = CONTENT.getRange("I17").getValue(); A1. replace(".", ""); 它给了我找不到replace函数的机会。Google Apps脚本中是否有任何函数允许我替换字符串?如果这是脚本的精确副本,则在A1.和替换之

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

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

它给了我找不到replace函数的机会。Google Apps脚本中是否有任何函数允许我替换字符串?

如果这是脚本的精确副本,则在
A1.
替换
之间有一个空格,但我假设不是

@SergeInsas是对的,内容必须是一个字符串,才能使
replace()
函数工作,因此,如果您试图将
替换为十进制数,则可以首先使用
toString()
方法,如下所示

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

或者,您可以将数字相乘以去除小数点,但这取决于小数点的位数:)

出于某种原因,此解决方案不适用于我。这是我的全部代码,应该用“nothing”替换“+”符号

  // I need to replace more occurrences of different strings, so this is just an example..
  var ui = SpreadsheetApp.getUi();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getRange("G5:G7").getValues();

  // this is a loop, to go through multiple cells that may contain the text, that needs to be replaced.
    for (var i = 0 ; i<range.length ; i++) {
        var le = range.length;
        var stri = range[i].toString().replace("+", "");
        Logger.log(stri);
  }  

  var msg = ui.alert("Replaced?");
  return msg;
//我需要替换更多出现的不同字符串,所以这只是一个示例。。
var ui=SpreadsheetApp.getUi();
var ss=SpreadsheetApp.getActiveSpreadsheet();
var range=ss.getRange(“G5:G7”).getValues();
//这是一个循环,用于遍历可能包含需要替换的文本的多个单元格。

for(var i=0;i在这个Google文档编辑器帮助论坛上分享了一个来自
Bannager Bong
的非常有用的解决方案,它对函数做了一点小小的修改,这样它就可以接受find的参数,替换值,然后添加一个range参数,这样函数就可以针对一个特定的区域。尽管如此,这个方法还是非常慢(我的床单有5k行)

函数Cleanup12m(){
var电子表格=SpreadsheetApp.getActive();
//fandr(“,”,“);
//fandr(“\”,“);
范德(”�“,”,spreadsheet.getRange('BA:BA');//使用特定范围
};
功能fandr(查找、回复){
var r=SpreadsheetApp.getActiveSheet().getDataRange();
var rws=r.getNumRows();
var cls=r.getNumColumns();
变量i,j,a,find,repl;
//查找=“abc”;
//repl=“xyz”;
我希望这对你有帮助

function removeAccents() {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getRange("F3:F");
  var data  = range.getValues();

  for (var row = 0; row < data.length; row++) {
    for (var col = 0; col < data[row].length; col++) {
      data[row][col] = (data[row][col]).toString().replace(/é/g, 'e');
      data[row][col] = (data[row][col]).toString().replace(/ã/g, 'a');
    }
  }
  range.setValues(data);
};
函数removeAccents(){
var电子表格=SpreadsheetApp.getActive();
var范围=电子表格.getRange(“F3:F”);
var data=range.getValues();
对于(变量行=0;行
有一种更强大、更简单的方法可用:

此问题的可接受答案需要额外的步骤将替换的字符串发回单元格

var FILE = SpreadsheetApp.openById("xyz");
var CONTENT = FILE.getSheetByName("Sheet1");
var A1 = CONTENT.getRange("I17").getValue();
A1. replace(".", "");
TextFinder方法不需要将数据写回单元格

var FILE = SpreadsheetApp.openById("xyz");
var CONTENT = FILE.getSheetByName("Sheet1");
var A1 = CONTENT.getRange("I17").getValue();
A1. replace(".", "");
如果要搜索多个单元格,则此方法可以节省迭代次数

  var FILE = SpreadsheetApp.openById("xyz");
  var CONTENT = FILE.getSheetByName("Sheet1");
  var A1 = CONTENT.getRange("I17");
  A1.createTextFinder(".").replaceAllWith("");
我还没有在大型数据集上测试过它,但我怀疑这会非常快



< P>强> >我写了一个.< /p>替换是一个JavaScript字符串函数,单元格中的数据必须是一个字符串,或者必须将它转换为String,做替换并写回它。如果你有很多单元格考虑使用批读/写。Gi(1)Getrangee()是2D数组,即使它的1列。2)你需要设置ValueSes()替换循环后。
for(变量i=0;i