是否可以使用这种在多个单元格中设置值的代码进行改进?
var depart = ligne.filter(String).length;
if ( depart < 27 ) {
var partence = depart + 2
} else {
var partence = depart + 13
}
commande.getRange(partence, 2).setValue(designation);
commande.getRange(partence, 15).setValue(designation);
commande.getRange(partence, 26).setValue(designation);
commande.getRange(partence, 37).setValue(designation);
commande.getRange(partence, 49).setValue(designation);
commande.getRange(partence, 61).setValue(designation);
commande.getRange(partence, 73).setValue(designation);
commande.getRange(partence, 85).setValue(designation);
commande.getRange(partence, 97).setValue(designation);
commande.getRange(partence, 109).setValue(designation);
可以这样做吗? :
commande.getRange(partence, 2 And 15 And 26 And 37 And 49 And 61 And 73 And 85 And 97 And 109).setValue(designation);
答案 0 :(得分:1)
Apps脚本中的范围始终是工作表的矩形部分。如果你必须修改几个彼此不相邻的单元格中的值,它们是单独的范围,你必须像你一样做很多getRange setValue调用。没有像getRange(partence, 2 And 15)
那样的内容。
但如果你的行&#34; partence&#34;不包含任何公式,您可以使用包含需要设置的所有单元格的单个范围。该范围内的其他值将被读取,然后保持不变(但这将删除这些单元格中的任何公式):
var ix = [2, 15, 26, 37, 49, 61, 73, 85, 97, 109];
var range = commande.getRange(partence, ix[0], 1, ix[ix.length-1] - ix[0] + 1);
var values = range.getValues();
for (i in ix) {
values[0][ix[i] - ix[0]] = designation;
}
range.setValues(values);
答案 1 :(得分:0)
您可以尝试这样的事情:首先创建一个要在工作表中插入/设置的值的数组,然后在单次插入该数组中。
var depart = ligne.filter(String).length;
if ( depart < 27 ) {
var partence = depart + 2
} else {
var partence = depart + 13
}
var values = [];
var values = commande.getRange(partence, 1, 110, 1).getValues();
var i;
for (i = 1; i <= values.length; i++) {
if(i == 2 || i == 15 || i == 26 || i == 37 || i == 49 || i == 61 || i == 73 || i == 85 || i == 97 || i == 109) {
values[i-1][0] = designation;
}
}
commande.getRange(partence, 1, 110, 1).setValues(values);
这是未经测试的代码。如果有错误,请告诉我,我很乐意帮助我们解决问题。
由于