简单的Google Script无效

Rya*_*cey 2 javascript google-sheets google-apps-script

我决定在使用电子表格时尽可能使用Google Scripts,只是为了开始增加知识.但我没有受过训练,很快被卡住了.

我在youtube上看到了一些不同脚本的代码,但我认为我提取了我需要的东西并且可以让它工作......

function y_add_up_function() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange["I2:J15"];
  var data = range.getValues();
  var sum = 0;

  for (var i = 0; i < 14; ++i)
  {
    var row = data[i];
    if(row[1] == "y")
    {
      sum = sum + row[0];
    }
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

这是我的电子表格.我试图只是简单地让SS加起来我已经y在价格旁边勾选了,但我收到的错误是:

TypeError:无法调用未定义的方法"getValues".(第5行)

请教我,我做错了什么^ _ ^ !!!

干杯!

tho*_*a88 5

该错误意味着您正在尝试在未定义的对象上调用方法.如果查看代码,则可以使用range.getValues().这意味着范围未定义.因此,您需要查看范围的分配:var range = sheet.getRange ["I2:J15"].这就是问题,getRange是一个方法,需要用括号调用,即getRange("I2:J15").

这是工作代码:

function y_add_up_function() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange("I2:J15"); // <-- fix here
  var data = range.getValues();
  var sum = 0;



  for (var i = 0; i < 14; ++i)
  {
    var row = data[i];
    if(row[1] == "y")
    {
      sum = sum + parseFloat(row[0].substring(2)); // <-- fix to get floats from "£ <number>"
    }
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

另请注意,由于您的成本列中有英镑符号,因此您需要去除符号以获取数字.这里我使用了.substring(2),但这不是非常安全的.如果您忘记在单元格中输入"£",则该数字将被错误地读取.我建议将井号放在列标题中,或者在解析数字时使用更复杂的方法将其删除.

例如,您可以使用row [0] .replace(/ ^ [0-9.]/g,'').这将替换所有不是数字或小数点的字符.这没有错误检查,但我认为这在个人电子表格中已经足够了.