Javascript 如何通过脚本从google sheets中的单元格中删除子字符串

Javascript 如何通过脚本从google sheets中的单元格中删除子字符串,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试自动解析我的一列中的数据。到目前为止,我有它,以便在应用一个公式后,我得到了我需要的数据,但它周围有文本。 我希望找到并替换单元格值,这样我就只有引号中的数据,而没有引号。我将如何通过脚本实现这一点?参考下图。这就是我到目前为止所做的: var src = ":utm_source=>"; var med = ":utm_medium=>"; var camp = ":utm_campaign=>";

我正在尝试自动解析我的一列中的数据。到目前为止,我有它,以便在应用一个公式后,我得到了我需要的数据,但它周围有文本。 我希望找到并替换单元格值,这样我就只有引号中的数据,而没有引号。我将如何通过脚本实现这一点?参考下图。这就是我到目前为止所做的:

var src = ":utm_source=>";
  var med = ":utm_medium=>";
  var camp = ":utm_campaign=>";
  var term = ":utm_term=>";
  var con = ":utm_content=>";
  var r1 = "";
  var data = sheet.getDataRange().getValues();
  Logger.log(data.length);
  for (var i = 0; i < data[0].length;i++){
    for (var j = 0; j < data.length;j++){
      Logger.log(data[j][i]);
      if(data[j][i].indexOf(src) > -1 || data[j][i].indexOf(med) > -1 || data[j][i].indexOf(camp) > -1 || data[j][i].indexOf(term) > -1 || data[j][i].indexOf(con) > -1){
      sheet.getRange(j+1,i+1).setValue(r1);
        sheet
      }
    }
  }
var src=“:utm_source=>”;
var med=“:utm_medium=>”;
var camp=“:utm_活动=>”;
var term=“:utm_term=>”;
var con=“:utm_content=>”;
var r1=“”;
var data=sheet.getDataRange().getValues();
Logger.log(数据长度);
对于(var i=0;i-1 |数据[j][i].indexOf(med)>-1 |数据[j][i].indexOf(camp)>-1 |数据[j][i].indexOf(术语)>-1 |数据[j][i].indexOf(con 1){
表.getRange(j+1,i+1).setValue(r1);
床单
}
}
}

  • 使用
    split(“”)[1]
    (请参阅)检索引号之间的子字符串
  • 首先,修改检索到的2D数组(
    data
    )并使用,而不是使用
    setValue
    设置每个数组。一种方法是通过和的组合,如下所示(检查内联注释):

欢迎使用。您包含的脚本有什么问题吗?请添加一个。尝试使用“拆分”,然后使用第二个term@Cooper我该怎么做呢?嗨,我会使用一个电子表格公式来做这个,比应用程序脚本快得多,试试这个函数,将要解析的数据分成B16:=mid(B16,find(“”),B16)+1,find(“”),B16,find(“”)“”,B16)+1)-(查找(“”,B16)+1))谢谢您的回答。我昨天就知道了。我使用数组存储字符串,并使用foreach循环进行替换。谢谢你。非常感谢。@MuzammilElahi您是通过
setValue
单独替换每个值,还是用
setValues
一次替换所有值?如果您使用的是
setValue
,为了提高效率,我建议使用
setValues
(请参阅我答案中的代码片段)(请阅读)。
var src = ":utm_source=>";
var med = ":utm_medium=>";
var camp = ":utm_campaign=>";
var term = ":utm_term=>";
var con = ":utm_content=>";
var starters = [src,med,camp,term,con]; // Put all starters to check in an array
var range = sheet.getDataRange();
var data = range.getValues();
data = data.map(row => row.map(value => { // Iterate through all rows and cells
  var includesStarter = starters.some(starter => value.includes(starter)); // Check if cell value includes a starter
  if (includesStarter) return value.split('"')[1]; // Retrieve value within quotations
  else return value; // If starter is not included in cell, don't change the array
}));
range.setValues(data); // Write modified data to original range