我正在尝试自动化我的其中一列中的数据解析过程。到目前为止,我已经有了它,以便在应用公式之后我可以获得所需的数据,但周围带有文本。 我想查找并替换单元格值,这样我只能得到用引号引起来的数据而不使用引号。我将如何通过脚本执行此操作?请参考下图。这是我到目前为止所拥有的:
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
}
}
}
答案 0 :(得分:0)
split('"')[1]
(请参阅split())检索引号之间的子字符串。data
)并使用setValues(data),而不是用setValue
设置每个人。通过结合使用map()和some()来完成此操作的一种方法,如下所示(请检查内联注释):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