我有以下代码循环遍历 A 列中的值,如果找到某个短语,则更新它旁边的单元格值。我的问题是我在 A 列中寻找的值在一个字符串内。我相信我需要的是 IndexOf,但是我还没有能够获得正确的语法/位置。我已经添加了 toLowerCase 因为同样,对于如何找到该值没有一致性。这是我迄今为止设法做到的:
function Add_Label(){
var ss = SpreadsheetApp.getActive();
var s = ss.getSheetByName('test')
var lr = s.getLastRow();
var range = s.getRange("A:A");
// var values = range.getValues().toString().toLowerCase();
// Logger.log(values);
for(var i=1;i<=lr;i++){
var somecell = s.getRange(i, 1).getValue().toString().toLowerCase();
if (somecell == 'vip') {
s.getRange(i,2).setValue('VIP');
} else if
(somecell == 'decom') {
s.getRange(i,2).setValue('Decomission');
} else if
(somecell == 'cert') {
s.getRange(i,2).setValue('Certificate');
}
}
}
编辑:1月20日
我今天做了更多的游戏/学习,并设法使以下代码正常工作,但是它非常缓慢并且经常失败/超时。我相信我需要做的是在每次迭代中不获取单元格值而是使用数组,但我承认我对如何实现这一点有点迷茫。
function Add_Labels_new(){
var ss = SpreadsheetApp.getActive();
var s = ss.getSheetByName('test')
var lr = s.getLastRow();
var range = ss.getRange('C1:C').getValues();
Logger.log(lr);
for(var i=1;i<=lr;i++){
var somecell = s.getRange(i, 3).getValue().toString().toLowerCase();
if (range[i][0].indexOf('new') != -1 && somecell.indexOf('vip') != -1 ||
somecell.indexOf('vm') != -1) {
s.getRange(i,12).setValue('VIP/VM');
} else if
(range[i][0].indexOf('decom') != -1) {
s.getRange(i,12).setValue('Decom');
} else if
(range[i][0].indexOf('cert') != -1) {
s.getRange(i,12).setValue('Cert');
} else if
(range[i][0].indexOf('alert') != -1) {
s.getRange(i,12).setValue('Alert');
} else
(s.getRange(i,12).setValue(issuetype));
}
}
function Add_Label(){
var ss=SpreadsheetApp.getActive();
var s=ss.getSheetByName('test');
var v=s.getRange(1,1,s.getLastRow(),2).getValues();
for(var i=0;i<v.length;i++) {
var s=v[i][0].toString().toLowerCase();
v[i][1]=(s=='vip')?'VIP':v[i][1];
v[i][1]=(s=='decom')?'Decomission':v[i][1];
v[i][1]=(s=='cert')?'Certificate':v[i][1];
}
s.getRange(1,1,v.length,v[0].length).setValues(v);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句