2011-04-30 8 views
2

스프레드 시트를 사용할 때도 Google 스크립트를 사용하기로 결정했습니다. 지식을 늘리기 시작했습니다. 그러나 나는 훈련받지 못하고 아주 빨리 붙어 있습니다. ...간단한 Google 스크립트가 작동하지 않습니다.

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

나는 다른 스크립트 YouTube에서 몇 가지 코드를 보았다하지만 난 내가 필요한 것을 추출이 작업을 얻을 수 있다고 생각. 나는 단지 내가 가격 옆에 y을 쳤다 한 곳까지 추가하는 SS를 얻기 위해 노력하고 있어요,하지만 난라는 오류가 무엇입니까 : 내가 잘못^_^뭐하는 거지

TypeError: Cannot call method "getValues" of undefined. (Line 5)

은 가르쳐주세요! !! !!

건배!

답변

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

오, 감사합니다. 좋은 교육 기술자입니다. –

+0

@RyanTracey https://stackoverflow.com/help/someone-answers – tehhowch

관련 문제