TypeError:无法在Sheet对象中找到getCell函数

时间:2017-12-03 08:45:43

标签: arrays google-apps-script google-sheets

我正在尝试从Google表格中获取一些数据以插入两个带有for循环的数组,但我认为我使用了错误的方法。

这是代码:

function regValori() {
    var datAgg = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("datiaggiornati");
    var f5 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio5");
    var CValue = new Array();
    var CName = new Array();

    CValue.lenght = datAgg.getRange("B1").getValue();
    CName.lenght = CValue.lenght;

    for (var i = 0; i <= CValue.lenght; i++)
    { 
        CValue[i] = datAgg.getCell(i, 16).getValue();
        CName[i] = datAgg.getCell(i+2, 1).getValue();
    }
    var riga = f5.getRange("B2").getValue();
      for (x = 3; x <= numCrypto; x++);
        for (i=0;i<numCrypto;i++);
          {
            f5.getRange(riga, x).setValue(valCrypto[r+i]);
            f5.getRange(2,numCrypto).setValue(nomiCrypto[r+i]);
          }
        }

错误:

  

TypeError:无法在Sheet对象中找到getCell函数

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

错误:

  • getCell()Range的方法,而不是Sheet
  • Google表格从rowIndex = 1
  • 开始

如果您不需要偏移(即从某个单元格开始),那么您可以使用getRange

for (var i = 0; i <= CValue.lenght; i++)
{
    var r = i + 1; // rowIndex
    CValue[i] = datAgg.getRange(r, 16).getValue();
    CName[i] = datAgg.getRange(r+2, 1).getValue();
}

答案 1 :(得分:0)

这是解决方案:

function regValori() {
    var datAgg = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("datiaggiornati");
    var f5 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio5");

    var riga = f5.getRange(2, 2).getValue();
    for (var i = 2; i <= 6; ++i) {
        f5.getRange(riga, i + 1).setValue(datAgg.getRange("P" + i).getValue());
        f5.getRange(2, i + 1).setValue(datAgg.getRange("A" + i).getValue());
    }
}

我在这里针对同样的问题发布了另一个问题,我得到了一个完美的答案how to use for loop to drastically reduce code lenght。 我改变的唯一部分就是这一部分:(var i = 2; i&lt; = 6; ++ i)这一部分:( var i = 2; i&lt; = n + 1; ++ i),所以它可以与任何变量n完美配合以获得命令&#34; var numCrypto = datAgg.getRange(1,2).getValue();&#34;