如何通过javascript中的谷歌日历api获得谷歌会议链接



我想创建一个行通知,它可以每天从我的谷歌日历中发送事件详细信息
我可以获得标题、描述、位置。。。等等,但我在日历API中看不到会议数据
我使用谷歌应用程序脚本来运行代码
这是我的代码

const Now = new Date();
const Start = new Date(new Date().setHours(0, 0, 0, 0));
const End =  new Date(new Date().setHours(23, 59, 59, 999));
const calendarData = calendar.getEvents(Start, End);
function Notify() {
var NotifyContents = '';
var i = 1;
calendarData.forEach(item =>{
if (Now <= item.getStartTime()) {
NotifyContents += (item.getTitle() != "") ? ("n" + i+". "+ item.getTitle() + "n") : ("nnNo Titlen");
NotifyContents += (item.getDescription() != "") ? item.getDescription() + "n" : "";
NotifyContents += (item.getStartTime() != "" && item.getEndTime() != "") ? "Time:" + item.getStartTime().toLocaleTimeString() + "-" + item.getEndTime().toLocaleTimeString() + "n": "";
NotifyContents += (item.getconferencedata() != "") ? ("n" + i+". "+ item.getconferencedata()) : ("No Conferencen");
i++;
}
}
)
if (typeof NotifyContents === 'string' && NotifyContents.length === 0) {
return;
}
NotifyTokens.forEach(function(value){
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", {
"method"  : "post",
"payload" : {"message" : NotifyContents},
"headers" : {"Authorization" : "Bearer " + value}
});
});
}

参考-日历API链接

为了从事件中检索会议链接,似乎在当前阶段需要使用日历API。当这反映在你的脚本中时,下面的修改如何?

修改的脚本:

在使用此脚本之前,请在高级谷歌服务中启用日历API。

来源:

var NotifyContents = '';
var i = 1;
calendarData.forEach(item => {
if (Now <= item.getStartTime()) {
NotifyContents += (item.getTitle() != "") ? ("n" + i + ". " + item.getTitle() + "n") : ("nnNo Titlen");
NotifyContents += (item.getDescription() != "") ? item.getDescription() + "n" : "";
NotifyContents += (item.getStartTime() != "" && item.getEndTime() != "") ? "Time:" + item.getStartTime().toLocaleTimeString() + "-" + item.getEndTime().toLocaleTimeString() + "n" : "";
NotifyContents += (item.getconferencedata() != "") ? ("n" + i + ". " + item.getconferencedata()) : ("No Conferencen");
i++;
}
}
)

收件人:

const eventList = Calendar.Events.list(calendar.getId(), { timeMin: Start.toISOString(), timeMax: End.toISOString(), maxResults: 2500 }).items.reduce((o, e) => (o[e.id] = e.conferenceData.entryPoints.map(({ uri }) => uri).join(","), o), {});
var NotifyContents = '';
var i = 1;
calendarData.forEach(item => {
if (Now <= item.getStartTime()) {
NotifyContents += (item.getTitle() != "") ? ("n" + i + ". " + item.getTitle() + "n") : ("nnNo Titlen");
NotifyContents += (item.getDescription() != "") ? item.getDescription() + "n" : "";
NotifyContents += (item.getStartTime() != "" && item.getEndTime() != "") ? "Time:" + item.getStartTime().toLocaleTimeString() + "-" + item.getEndTime().toLocaleTimeString() + "n" : "";
var eventId = item.getId().split("@")[0];
NotifyContents += eventList[eventId] != "" ? ("n" + i + ". " + eventList[eventId]) : ("No Conferencen");
i++;
}
});
  • 在这个修改中,它假设calendar已经被解密。请小心

参考:

  • 事件:列表

最新更新