簡體   English   中英

如何在 javascript 中通過谷歌日歷 api 獲得谷歌見面鏈接?

[英]How to get Google meet link thru google calendar api in javascript?

我想創建一個線路通知,它可以每天從我的谷歌日歷發送事件詳細信息。
我可以獲取標題、描述、位置...等,但在日歷 API 中看不到會議數據。
我使用 Google Apps 腳本來運行代碼。
這是我的代碼。

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") : ("\n\nNo Title\n");
        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 Conference\n");
        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。 當這反映在您的腳本中時,如何進行以下修改?

修改后的腳本:

在使用此腳本之前, 請在高級 Google 服務中啟用日歷 API

從:

var NotifyContents = '';
var i = 1;
calendarData.forEach(item => {
  if (Now <= item.getStartTime()) {
    NotifyContents += (item.getTitle() != "") ? ("\n" + i + ". " + item.getTitle() + "\n") : ("\n\nNo Title\n");
    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 Conference\n");
    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") : ("\n\nNo Title\n");
    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 Conference\n");
    i++;
  }
});
  • 在這個修改中,它假設calendar已經被聲明。 請注意這一點。

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM