我正在尝试创建一个Google Apps脚本,以使Google日历和云端硬盘上的“主电子表格”保持同步-这可能吗?我发现了这两篇文章:
http://blog.ouseful.info/2010/03/04/maintaining-google-calendars-from-a-google-spreadsheet/
http://blog.ouseful.info/2010/03/05/grabbing-google-calendar-event-details-into-a-spreadsheet/
我很确定这可以使用很多if语句和逻辑来完成,但是也许有更简单的方法吗?
我最后只提供了以下简单脚本。真正需要做的只是基于两列添加事件,这将花费很长时间来开发。
function onOpen() {
//spawns a menu with a button that triggers AddToCal
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Add event to calendar",
functionName : "AddToCal"
}];
sheet.addMenu("Data To Calendar Plugin", entries);
};
function AddToCal(){
//get the current row
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getActiveCell();
var R = cell.getRow();
//grab values for current row to pass to calendar event
var date_of_event = ss.getRange('G'+R).getValue();
var date = new Date(date_of_event);
var …Run Code Online (Sandbox Code Playgroud) javascript synchronization google-calendar-api google-sheets google-apps-script
每当我通过 Google 日历 UI 添加访客时,都会弹出以下对话框:
如果我选择“发送”,它会向用户发送一封格式良好的电子邮件,并提供响应日历事件的选项:
当您手动使用 Google 日历 UI 时,这可以完美运行。问题是我正在尝试使用 Google Apps 脚本来自动将人员添加到事件中。
我正在使用addGuest()以编程方式将客人添加到 CalendarEvent :
event.addGuest("user@example.com");
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有发送电子邮件的选项。
我能找到的最接近的是,当您以编程方式创建事件时,您可以设置sendInvites:
var event = CalendarApp.getDefaultCalendar().createEvent(
'Test',
new Date('April 5, 2029 20:00:00 UTC'),
new Date('April 5, 2029 21:00:00 UTC'),
{sendInvites: true, guests:"your.email+1@example.com"});
Logger.log(event.getId());
Run Code Online (Sandbox Code Playgroud)
这将正确发送格式良好的电子邮件。
但是,该sendInvites选项仅在新创建事件时有效。如果以后我打电话:
var event = CalendarApp.getEventById("insert_id_here");
event.addGuest("your.email+2@example.com");
Run Code Online (Sandbox Code Playgroud)
...它不会发送电子邮件更新(即使该事件是使用 创建的sendInvites=true)。这意味着sendInvites是暂时的,不会在事件上持续存在。
sendInvites调用addGuest()事件时有什么办法吗?例如event.addGuest("user@example.com", {sendInvite: true})?
是否有任何其他解决方法会产生与点击上面 UI 中的“发送”按钮时发送的电子邮件相同的电子邮件?
注:我不希望使用MailApp,因为它不会被很好地格式化像一个谷歌发送电子邮件自动发送出去(例如,具有嵌入式日历邀请,出席者,描述,响应链接等,等,等)。
更新:
如果我有 Google Calendar event 的 event ID,例如:
4htgpmm1hmak744r0kbkdcodar@google.com
如何构建 URL 以在 Google 日历界面中查看事件详细信息?
例如,如果我去参加一个谷歌日历活动,我会看到一个像这样的 URL:
什么功能/算法可我跑从去4htgpmm1hmak744r0kbkdcodar@google.com到NGh0Z3BtbTFobWFrNzQ0cjBrYmtkY29kYXIgZXVndTlrYW4xZGRpMXBtaTZzazNpYjWoNmdAZw?
奖励:如果还有一个通过 Google Apps Script 处理CalendarEvent的快捷方法,那就太棒了。例如,如果有一个方法,getUrl()就像有一个getId()方法一样。
javascript ×1