Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google calendar api 多个谷歌日历到谷歌工作表双向同步问题_Google Calendar Api_Google Sheets Api_Submenu - Fatal编程技术网

Google calendar api 多个谷歌日历到谷歌工作表双向同步问题

Google calendar api 多个谷歌日历到谷歌工作表双向同步问题,google-calendar-api,google-sheets-api,submenu,Google Calendar Api,Google Sheets Api,Submenu,您好,我正在尝试修改一个脚本,同步谷歌日历与谷歌工作表。 从日历到工作表,从工作表到日历 目前,日历ID是在google代码中的这一行手动输入的: var calendarId='0(calendarid@group.calendar.google.com“; 这是由Dave Par的剧本 我修改了显示如下的菜单: var ui = SpreadsheetApp.getUi(); var subMenu = SpreadsheetApp.getUi().createMenu('Updat

您好,我正在尝试修改一个脚本,同步谷歌日历与谷歌工作表。 从日历到工作表,从工作表到日历

目前,日历ID是在google代码中的这一行手动输入的:

var calendarId='0(calendarid@group.calendar.google.com“;

<>这是由Dave Par的剧本

我修改了显示如下的菜单:

  var ui = SpreadsheetApp.getUi();


var subMenu = SpreadsheetApp.getUi().createMenu('Update to Calendar')
                          .addItem('Update to Calendar', 'syncToCalendar')


var topMenu = SpreadsheetApp.getUi().createMenu('Calendar Sync')
                          .addItem('Update from Calendar', 'syncFromCalendar')
                          .addSubMenu(subMenu);

topMenu.addToUi();
}
我想做的是让菜单中的两个函数SyncToCalendar和SyncFromCalendar都能够有一个子菜单,作为使用下面的函数填充的所有日历的下拉列表

var日历,pageToken;
做{
日历=Calendar.CalendarList.list({
最大结果:100,
pageToken:pageToken
});
if(calendars.items&&calendars.items.length>0){
对于(var i=0;i
因此,基本上可以选择一个特定的日历来运行函数SyncTocalendar和函数SyncFromCalendar

我们将非常感谢为实现这一目标提供的任何帮助

我看到过一个主题,它是在一个单元格上完成的,您只需更改一个id,所以我希望这个脚本可以修改为在子菜单下拉列表中显示日历名称


您最好的选择是更改
syncToCalendar
syncFromCalendar
以输入参数。但这是不可能的,因为通过菜单执行的函数不带参数。您可以看到非常类似的问题

如果日历的数量是固定的,并且很少,您可以尝试只包装这两个函数,并根据菜单中的“完成”调用其中一个或另一个

但是,如果您遇到大量无法静态包装的日历,您应该尝试使用构造函数动态包装。这将为您提供一种在运行代码时创建函数的方法,请参阅


您也可以尝试其他方法,例如,您可以创建一个获取所有日历ID的窗口,并从该单元格获取日历ID。

您好,谢谢您的帮助,不幸的是,我是一个非常新手的程序员,但我想学习!您是否有机会为我创建一个您在google的应用程序中提供的最后3个解决方案的工作示例床单?
  var calendars, pageToken;
  do {
    calendars = Calendar.CalendarList.list({
      maxResults: 100,
      pageToken: pageToken
    });
    if (calendars.items && calendars.items.length > 0) {
      for (var i = 0; i < calendars.items.length; i++) {
        var calendar = calendars.items[i];
        Logger.log('%s (ID: %s)', calendar.summary, calendar.id);
      }
    } else {
      Logger.log('No calendars found.');
    }
    pageToken = calendars.nextPageToken;
  } while (pageToken);
}