그래서 Google 스프레드 시트가 두 개의 탭이있는 캘린더에서 데이터를 가져 오기를 원합니다. 하나의 탭은 데이터가 입력되는 곳입니다. "ss.". 두 번째 탭은 DateFrom, DateTo 및 CurrentEmail을 선택할 수있는 설정 탭입니다. "ssSettings". 사용자가 날짜와 날짜를 입력하면 스크립트가 현재 정보를 받고있는 이메일을 볼 수 있으며 원하는 경우 변경할 수 있습니다. "datefrom"및 "dateto"에 대한 변수를 설정했지만 "currentEmail"에 대해 동일한 작업을 수행하려고하면 다음 오류가 발생합니다.
TypeError: Cannot call method "getEvents" of null. (line 8, file "Code")
누구든지 이것을 해결하는 방법을 알고 있습니까? Im Google 스크립트를 처음 접했습니다. 이것은 내 스크립트입니다.
function getEvents() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GettingEvents")
var ssSettings = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GettingEventsSettings");
var DateFrom = ssSettings.getRange("B1").getValue();
var DateTo = ssSettings.getRange("B2").getValue();
var CurrentEmail = ssSettings.getRange("B3").getValue();
var cal = CalendarApp.getCalendarById(CurrentEmail);
var events = cal.getEvents(DateFrom, DateTo);
var lr = ss.getLastRow();
ss.getRange(2, 1, lr, 5).clearContent();
for(var i = 0;i<events.length;i++){
var title = events[i].getTitle();
var sd = events[i].getStartTime();
var ed = events[i].getEndTime();
var loc = events[i].getLocation();
var des = events[i].getDescription();
ss.getRange(i+2,1).setValue(title);
ss.getRange(i+2,2).setValue(sd);
ss.getRange(i+2,3).setValue(ed);
ss.getRange(i+2,4).setValue(loc);
ss.getRange(i+2,5).setValue(des);
}
}
설정 탭이 이와 같거나 코드를 망가 뜨리지 않고 사용자가 편집 할 수있는 모양을 원합니다.
를받는 이유 TypeError: Cannot call method "getEvents" of null. (line 8, file "Code")
는 사용중인 스크립트 가 활성 스프레드 시트에 바인딩되어 있지 않기 때문 입니다. 이 .getActive()
메서드는 현재 활성화 된 스프레드 시트를 반환하거나 null
없는 경우 위에 제공된 코드에서 발생한 경우를 반환합니다 .
스프레드 시트와 상호 작용할 수 있으려면 코드를 다음과 같이 업데이트해야합니다.
var as = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID");
var ss = as.getSheetByName("GettingEvents")
var ssSettings = as.getSheetByName("GettingEventsSettings");
이 .openById()
메서드는 지정된 ID로 스프레드 시트를 열므로 이름으로 시트를 가져올 수 있습니다.
또한 향후 개발에 도움이 될 수 있으므로 이러한 링크를 살펴 보시기 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다