从 Google 表格中的多个日历中检索事件

问题描述 投票:0回答:1

我是谷歌脚本代码的初学者。我被循环中的循环阻止,试图在谷歌表格中获取多个谷歌日历的事件。我在这个论坛(此处)中找到了一些帮助,但无法使其正常工作 这是我的最后一个代码:

// Menu et bouton pour l'execution du script
function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('📅 Import Google Agenda')
        .addItem('▶️ Exécuter le script', 'getEvents')
      .addToUi();}

// Script pour récupérer les informations des événements entre deux dates
function getEvents() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var start_time = sheet.getRange("A2").getValue();
  var end_time = sheet.getRange("B2").getValue();
  
  

  var CALENDER_IDS = [
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
  ]
// Boucle Pour récupérer les ID de Calendrier
  for (var i = 0, clen = CALENDER_IDS.length; i < clen; i++) {
    var cal = CalendarApp.getCalendarById(CALENDER_IDS[i]);
    //var events = cal.getEvents(new Date(start_time), new Date(end_time));
    var events = cal.getEvents(new Date(start_time), new Date(end_time));
    var calname = cal.getName
    Browser.msgBox(calname);

// Boucle pour récupérer les événenements définies entre les deux dates "start_time" et "end_time"
  for (var j = 0;j<events.length;j++){
    var title =  events[j].getTitle();
    var start_time =  events[j].getStartTime();
    var end_time =  events[j].getEndTime();
    var loc = events[j].getLocation();
    var des =  events[j].getDescription();
    var color =  events[j].getColor();

    // Récupération des insertions des informations des événements (ordre des colonnes du fichier sheets)
    sheet.getRange(j+5,1).setValue(title);
    sheet.getRange(j+5,2).setValue(start_time);
    sheet.getRange(j+5,3).setValue(end_time);
    sheet.getRange(j+5,4).setValue(des);
    sheet.getRange(j+5,5).setValue(color);
    sheet.getRange(j+5,6).setValue(loc);
  }
  }
  Logger.log("Evénements ajoutés dans le fichier.");
}

有什么建议吗?谢谢

javascript loops google-sheets google-apps-script google-calendar-api
1个回答
0
投票

尝试这样的事情:

function getEvents() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName("Sheet1");
  var start_time = sh.getRange("A2").getValue();
  var end_time = sh.getRange("B2").getValue();
  var calidsA = [
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
  ]
  calidsA.forEach(id) (id => {
    let cal = CalendarApp.getCalendarById(id);
    let evts = cal.getEvents(new Date(start_time), new Date(end_time));
    let calname = cal.getName
    evts.forEach((ev,j) => {
      sh.getRange(j+5,1,1,6).setValues([[cal.getName(),ev.getTitle(),ev.getStartTime(),ev.getEndTime(),ev.getDescription(),ev.getColor(),ev.getLocation()]])
    })
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.