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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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应用程序脚本regex replace用于多个值,但不适用于单引号_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google应用程序脚本regex replace用于多个值,但不适用于单引号

Google apps script Google应用程序脚本regex replace用于多个值,但不适用于单引号,google-apps-script,google-sheets,Google Apps Script,Google Sheets,问题 使用下面的代码,我想将所有“NULL”值替换为“NULL”。目前,它将只替换一个值 代码 function generateSQLCode() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('seed-data'); var row_count = sheet.getLastRow(); var input_data = sheet.getRange(1, 1, row_count, 20)

问题

使用下面的代码,我想将所有“NULL”值替换为“NULL”。目前,它将只替换一个值

代码

function generateSQLCode() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('seed-data');
  var row_count = sheet.getLastRow();
  var input_data = sheet.getRange(1, 1, row_count, 20).getValues();
  var data = [];

  for (var i = 0; i < row_count; i++) {

      var row_data; 

      } else if (input_data[i][0] == "entry") {
        row_data = input_data[i].shift();
        row_data = "('" + input_data[i].filter(e=> e!=="").join("', '").replace(/'NULL'/gi, "NULL") + "');";


      data.push([row_data]);
  }
  sheet.getRange(1, 21, data.length, 1).setValues(data);
}

在替换任何空值之前,必须重新分配行_数据以获取完整字符串

else if (input_data[i][0] == "entry") {
row_data = input_data[i].shift();
row_data = "('" + input_data[i].filter(e=> e!=="").join("', '") + "'),";
row_data = row_data.replace(/'NULL'/gi, "NULL")

与其为所有可能非常耗时的数组创建,不如让我向您推荐一个名为

这可以简化许多代码并使其更快

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  Logger.log(sheet.getName());
  var range = sheet.getDataRange();


  var txtFinder = range.createTextFinder("'NULL'");
  txtFinder.replaceAllWith("NULL")


}
试着使用这个片段,看看它是如何运行的

解释 要使用
TxtFinder
类,首先需要创建一个对象,可以使用
createTextFinder
方法

实际上,你不仅可以像我一样,在某个范围内使用这个方法,甚至可以

创建此对象后(在我的示例中为
txtFinder
)。你可以做课堂上列出的很多事情。对于您的情况,只需使用替换所有匹配项即可



另外请注意,如果要查找工作表中的所有数据,只需调用

1即可。请使用适当的标记。2.你能出示准确的数据吗?如果这:
NULL 1null
是一行,那么join将产生
NULL',1',NULL
。请注意,两边都没有引用NULL。感谢您指出这一点,我用
}else解决了这个问题,如果(输入数据[I][0]==“条目”){row\u data=input\u data[I].shift();row\u data=“('”+input\u data[I]。过滤器(e=>e!==”)。连接(“,”+”),“row\u data=row\u数据。替换(/'NULL'/gi,“NULL”)
function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  Logger.log(sheet.getName());
  var range = sheet.getDataRange();


  var txtFinder = range.createTextFinder("'NULL'");
  txtFinder.replaceAllWith("NULL")


}