我可以将变量设置为Google脚本中.getCalendarById的“ Id”吗?

问题描述 投票:1回答:1

因此,我希望Google电子表格从具有两个标签的日历中获取数据。一个选项卡将是输入数据的位置; “ ss”。第二个选项卡是一个设置选项卡,您可以在其中选择DateFrom,DateTo和CurrentEmail。 “ ssSettings”。当用户输入往返日期时,他们还可以查看脚本当前从中获取信息的电子邮件,并且可以根据需要更改该电子邮件。我将变量设置为“ datefrom”和“ dateto”,但是当我尝试对“ currentEmail”执行相同操作时,出现以下错误;

TypeError: Cannot call method "getEvents" of null. (line 8, file "Code")

有人知道如何解决吗?我是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);
    }
}
google-apps-script google-sheets google-calendar-api
1个回答
0
投票

您可以使用类似的方法获取所有日历上的信息:

function calinfo() {
  var cals=CalendarApp.getAllCalendars();
  var calObj={nameA:[]};
  cals.forEach(function(cal,i){calObj[cal.getName()]=cal.getId();calObj.nameA.push(cal.getName());});
  Logger.log(JSON.stringify(calObj));
}               
© www.soinside.com 2019 - 2024. All rights reserved.