简单的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,'')。这将替换所有不是数字或小数点的字符。这没有错误检查,但我认为在个人电子表格中就足够了。

+0

哦男人你的王牌感谢很多(良好的教学技巧队友!) – 2011-04-30 16:01:52

+0

@RyanTracey https://*.com/help/someone-answers – tehhowch 2018-03-05 17:48:59