展开运算符在Google应用脚本中只返回第一个值。

3
我正在尝试使用Google Apps Script在Google表格中插入一些值,但是当我扩展之前定义的范围时,它只返回第一个值。
我期望Logger.log(...pasteAndFormatRange);Logger.log(pasteAndFromatRange.flat(),以及Logger.log(pasteAndFormatRange[0], pasteAndFormatRange[1], pasteAndFormatRange[2], pasteAndFormatRange[3]);返回2.0, 1.0, 626.0, 9.0,但实际上只返回2.0
我期望Logger.log(pasteAndFormatRange);Logger.log([...pasteAndFormatRange]);返回[2.0, 1.0, 626.0, 9.0],它确实返回了这个结果。
我确保数组的typeof确实是一个object。我尝试了多种方式从这个数组创建一个新数组,但新数组的行为方式相同。
这个一个星期前还好好的...我猜下一步就是直接在.getRange()方法内定义范围,但这样我就无法保持代码的DRY了 :(
以下是代码:
let pasteAndFormatRange;

  if (action === 'override') {
    pasteAndFormatRange = [2, 1, target.getLastRow()-1, target.getLastColumn()];
  }

  Logger.log(pasteAndFormatRange); // returns [2.0, 1.0, 626.0, 9.0]
  Logger.log([...pasteAndFormatRange]); // returns [2.0, 1.0, 626.0, 9.0]
  Logger.log(...pasteAndFormatRange); // returns 2.0
  Logger.log(pasteAndFormatRange[0], pasteAndFormatRange[1], pasteAndFormatRange[2], pasteAndFormatRange[3]); // returns 2.0

target.getRange(...pasteAndFormatRange).setValues(data.slice(1));
3个回答

1
问题不在于扩展运算符。
查看Logger.log的文档,它只接受一个参数,因此会默默地忽略其他参数。将其保持为数组应该就可以解决问题,正如你所见。

0

Logger不支持多个参数。请使用console.log代替。

function tgi09(){
  console.log(1,2,3);//Logs 1 2 3
  Logger.log(1,2,3); //Logs 1.0
}

0

然而,如果 pasteFormatRange 是一个数组而不是一个范围,它就能正常工作:

function myfunk() {
  const pasteAndFormatRange = [
    [1, 2, 3],
    [4, 5, 6]
  ];
  Logger.log([...pasteAndFormatRange]);
}

7:22:52AM  Notice  Execution started
7:22:52AM  Info    [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]
7:22:53AM  Notice  Execution completed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接