2016-08-10 2 views
0
function doGet(){ 

    try{ 

    var html = HtmlService.createTemplateFromFile('index').evaluate().setTitle('Web App').setSandboxMode(HtmlService.SandboxMode.NATIVE); 
    var x = t; 

    } catch(error){ 

    var errorSheet = SpreadsheetApp.openById('...MySpreadSheetID...').getSheetByName('errors'); 
    var cell = errorSheet.getRange('A1').offset(errorSheet.getLastRow(), 0); 
    cell.setValue(new Date() + ' function doGet(): ' + error) 

    } 

    return html; 

} 

왜 getRange() 메소드가 작동하지 않습니다.null로 Google App Script getRange() 메소드를 호출 할 수 없습니다.

null의 getRange()를 호출 할 수 없다고 명시되어 있습니까?

답변

0

SpreadsheetApp.openById (...)는 "... MySpreadSheetID ..."를 말하며, 아마도 정의되지 않았습니다.

계정에 정의 된 스프레드 시트의 ID를 올바르게 입력해야합니다.

/편집 : 스프레드 시트가 정의되지 않았거나 정의되지 않은 스프레드 시트의 시트입니다.

+0

관련성이 없기 때문에 사용자가 작업중인 문서의 'id'를 공유하지 않으려한다고 생각합니다. ID가 잘못되었을 때 표시되는 오류 메시지가 '잘못된 스프레드 시트 키'라고 오인하지 않으면 – ocordova

+0

@ocordova도 오류 메시지를 공유하지 않으므로 결과 만 표시됩니까? 그래서 그 스프레드 시트 나 시트가 정의되지 않았습니다 ... 나는이 포스트를 편집했습니다. – michaelsinner

+0

유효한 'id'를 [openById()] (https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app) 메소드에 전달하지 않으면 잘못된 '스프레드 시트 키'가 throw됩니다. '오류가 발생했습니다. 지정된 이름의 시트가 없으면 [getSheetByName()] (https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheetbynamename) 메서드는'null'을 반환하므로'errorSheet'는' null'을 호출하고'errorSheet'의 getRange를 호출하면''getRange ''of null' 메서드를 호출 할 수 없습니다. 질문의 제목과 일치합니다. 또한'errors'라는 탭이 없다고 생각합니다. – ocordova

1

getRange()은 하나 이상의 인수가 필요합니다 (인수 구성에 따라 다름). 스프레드 시트에 errors이라는 탭이 없을 수 있습니다.

제안 : 당신이 가능한 다음 행에서 새 행을 추가하려는 경우, 당신은 appendRow() 방법을 사용할 수 있습니다

, 단지이 방법은 값의 배열을 기대하고 고려한다. catch 문은 다음과 같아야합니다.

} catch(error){ 

    var errorSheet = SpreadsheetApp.openById('...MySpreadSheetID...').getSheetByName('errors'); 
    errorSheet.appendRow([new Date() + ' function doGet(): ' + error]) 
    } 
관련 문제