getNumColumns() 不更新?

getNumColumns() doesn't update?

基本上,我要做的是通过脚本将一定数量的值插入到电子表格中。按照我设置的方式,它分别插入每个值,调用函数 x 次。

假设我有 4 个值。我想将所有值插入第 1 行,然后是第 1 列、第 2 列、第 3 列、第 4 列。我的代码中现在发生了什么,它是否仅将所有值插入第 1 列,并且它只是覆盖了已经存在的任何内容在第 1 列中,所以我只得到最后一个值。

var column = sheet.getDataRange().getNumColumns() + 1;

sheet.getRange(1, column).setValue(question);

如果我将 + 1 添加到 getNumColumns,它将添加所有四个值,但添加到第 2、3、4 和 5 列。所以基本上,如果我不使用 + 1,getNumColumns( ) 从不更新,每次插入一个值时它都保持在 1。我不知道为什么会这样,现在已经搜索了很长一段时间来寻找答案。

编辑代码:

var range = sheet.getDataRange();
  var data = range.getValues();


  if (range.isBlank()){
    var column = 1;
    sheet.getRange(1, column).setValue(question);
  }else{
    var column = sheet.getDataRange().getNumColumns();
    sheet.getRange(1, column).setValue(question);
  }

看起来你的数据范围初始化为第 1 列,这意味着第一次通过你添加 1+1 得到第 2 列等。最简单的方法可能是写一个 if-statement 这样当getDataRange().getNumColumns() == 1,你不加1,而是每隔一段时间加一次。如果 API 允许的话,最好找到一种方法将数据范围初始化为 0 而不是 1。

已编辑:再三考虑,更安全的方法是检查数据范围是否为空,而不是检查列数是否为 1。您可以使用 isBlank() 方法。