2017-12-03 277 views
-1

我试图从Google表格中获取一些数据,以便插入两个数组并使用for循环,但我认为我使用了错误的方法。TypeError:无法在Sheet对象中查找getCell函数

这是代码:

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: Impossible to find getCell function in the Sheet object

感谢您的帮助!

+0

你的数据是怎样的,你试图得到哪个单元格? – aaron

+0

函数必须从一张纸上读取一组值并将其插入另一张(同一个Google文档)。数组必须是动态的,因为数据可以变化,但它们一起变化(即,如果第一组值是14而另一组值是14)。工作表是关于加密货币的。我希望有一张表格可以在预定的时间每天保存它们的价值(它会连续变化)。因此,函数必须读取加密货币名称(第一个数组)和加密货币值(第二个数组),并将其放入第二个表中,每天显示更新后的值。 –

+0

这回答你正在做什么*试图做*,但没有回答我问的问题。 – aaron

回答

1

错误:

  • getCell()Range的方法,而不是Sheet
  • 谷歌张纸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(); 
} 
+0

尝试在“for”条件后删除分号';'。 – aaron

+0

已经做到了,但它不起作用。现在不要担心。你认为这些代码可以将数据放在谷歌表格上吗? –

+0

我不明白为什么不。 – aaron

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 < = 6; ++ i)with this one:(var i = 2; i < = n + 1; ++ i),所以它可以使用命令“var numCrypto = datAgg.getRange(1,2).getValue();”

+0

将您的答案标记为已接受。 – aaron

+0

我该怎么做? –

+0

单击答案左侧的复选标记。 – aaron

相关问题