簡體   English   中英

Google電子表格腳本:創建簡單函數時“無法在對象表中找到函數getRange”

[英]Google Spreadsheet Script: “Cannot find function getRange in object Sheet” when creating a simple function

對不起,對於這個愚蠢的問題,但我搜索了整個互聯網,我找不到一個好的教程來學習如何在Google SpreadSheet Script中編程。

我想為練習做一個非常簡單的功能。

function simplesum(input) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets();
  var range = sheet.getRange(input);

var x = 0;

for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {

var cell = range.getCell(i, j);

x += (cell.getValue());
}
}

return x;
}

我知道我可以使用= sum()做同樣的事情。 這里的想法是學習如何編程。

當我嘗試在單元格中使用我的函數時:(即:= simplesum((A1:A8))它給出一個錯誤說:“TypeError:在對象表中找不到函數getRange。(第4行)”

我該怎么辦?

再一次,抱歉這個愚蠢的問題....

在這種情況下,您將Google Apps腳本功能實現為在電子表格單元格中調用的自定義功能

將范圍傳遞給在電子表格單元格中調用的自定義函數時,您不會傳遞范圍對象或范圍引用,而是傳遞2-D Javascript數組值。 所以你的自定義函數應該只處理該數組。

function simplesum(input)
{
  var x = 0;
  for (var i = 0; i < input.length; i++)
  {
    for (var j = 0; j < input[0].length; j++)
    {
      x += input[i][j];
    }
  }
  return x;
}
var sheet = ss.getSheets();

返回一個工作表數組,這意味着sheets.getRange(輸入)將拋出該錯誤。 試試這個:

var sheet = ss.getSheets()[0];

它選擇了第一張工作表。 Google為此提供了一些不錯的文檔。 例如, 這是關於getRange()的文檔 請注意,它也使用ss.getSheets()[0]。 希望這有幫助!

這是有效的:

function sum(input) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet(); // your mistake : getSheets() 
  var range = sheet.getRange(input);

  var x = 0;

  for (var i = 1; i <= range.getNumRows(); i++) {
    for (var j = 1; j <= range.getNumColumns(); j++) {

     var cell = range.getCell(i, j);

      x += cell.getValue();
   }
 }

  return x;
}

function main () // Yes, I am a former C-programmer ...
{
   var s = sum ("A1:B3"); // Notice the quotes. A string must me entered here.
   Logger.log('s = ' + s);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM