Google日历与Google电子表格同步

时间:2018-09-25 12:12:35

标签: google-apps-script google-sheets google-calendar-api

我发现了一个非常棒的脚本,可以同步Google CAL和Google电子表格。双向同步。而且有效! -> https://github.com/Davepar/gcalendarsync

现在,我无法将日历的地址放在名为Data的工作表中。在单元格B1中。脚本应该从那里拉地址,这样我就不需要在脚本中更改它。

有人可以弄清楚该怎么做吗?
所做的更改涉及通过Data!B1
来定义calendarId。 而且该脚本只能在表格上运行

您可以在此处查看示例文档:https://docs.google.com/spreadsheets/d/1TCIIBRmshx2kmhhwrhCpg5sxO7N82tOJ7hHxWv_u-Yw/edit?usp=sharing

我在工作表脚本上复制了脚本

1 个答案:

答案 0 :(得分:1)

在第8行声明日历ID

var calendarId = 'bora-bora.dk_is0cr9ibe4thrs4mkqghvudrrk@group.calendar.google.com';

它由两个函数调用:
1 = syncFromCalendar在第223行。从日历同步到电子表格。

var calendar = CalendarApp.getCalendarById(calendarId);
307行上的

2 = syncToCalendar。从电子表格同步到日历。

var calendar = CalendarApp.getCalendarById(calendarId);

目标是通过编程方式调用日历ID,以从数据表的单元格B1中获取值。
为此,i)应该删除该变量,ii)添加/插入新代码以获取日历ID的新值,并且iii)对要求日历ID值的函数进行调整。

操作:

1-注释掉第8行
2-在第9行插入以下代码

// Get the calendar code from Sheet "Data", cell B1
function getcalendarId() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("Data");
  var calrange = sheet.getRange("B1");
  var calid =calrange.getValue();
  return calid;
}

3-找到函数= syncFromCalendar
3.1-将此行注释掉

var calendar = CalendarApp.getCalendarById(calendarId);

3.2在注释行上方插入/添加这三行

// Get the calendar ID
var calidFrom = getcalendarId();
var calendar = CalendarApp.getCalendarById(calidFrom);

4-查找功能= syncToCalendar
4.1注释掉这一行

var calendar = CalendarApp.getCalendarById(calendarId);

4.2在注释行上方插入/添加这三行

// Get the calendar ID
var calidTo = getcalendarId();
var calendar = CalendarApp.getCalendarById(calidTo);