getNumColumns()不更新?

时间:2017-02-15 23:57:46

标签: javascript google-sheets google-spreadsheet-api

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

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

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

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

如果我向getNumColumns添加+ 1,它将添加所有四个值,但是添加到第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 个答案:

答案 0 :(得分:0)

看起来您的数据范围初始化为第1列,这意味着第一次通过您添加1 + 1来获取第2列,等等。最简单的方法可能是编写if语句,以便在{{1}时},你不添加1,但每隔一段时间添加一次。如果API允许的话,更好的方法是找到一种方法将数据范围初始化为0而不是1。

编辑:再想一想,更安全的方法是检查数据范围是否为空,而不是列数为1.您可以使用getDataRange().getNumColumns() == 1方法。