为多个.getRange()简化Google表格的Apps脚本代码.setValue()

时间:2017-12-16 13:08:00

标签: google-apps-script google-sheets

是否可以使用这种在多个单元格中设置值的代码进行改进?

 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);

2 个答案:

答案 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);

这是未经测试的代码。如果有错误,请告诉我,我很乐意帮助我们解决问题。

由于