简单的Google脚本不能正常工作
问题描述:
当我使用电子表格时,我决定使用Google脚本,只是为了增加知识。但我没有受过训练,很快就卡住了。简单的Google脚本不能正常工作
我看到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;
}
This is my spreadsheet。我想只是简单的让SS加起来,我已经打勾旁边的一个价格y
,但我得到的是一条错误:
TypeError: Cannot call method "getValues" of undefined. (Line 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;
}
还要注意,因为你必须在你的成本列英镑的迹象,你需要剥去迹象得到一个数字。这里我使用了.substring(2),但这不是非常安全的。如果你忘记把“英镑”放在一个单元格中,数字将被错误地读取。我建议将英镑符号放在列标题中,或者在解析数字时使用更复杂的方法将其删除。
你可以例如使用row [0] .replace(/^[0-9。]/g,'')。这将替换所有不是数字或小数点的字符。这没有错误检查,但我认为在个人电子表格中就足够了。
哦男人你的王牌感谢很多(良好的教学技巧队友!) – 2011-04-30 16:01:52
@RyanTracey https://stackoverflow.com/help/someone-answers – tehhowch 2018-03-05 17:48:59