簡體   English   中英

GAS:從電子表格創建日歷事件

[英]GAS: Create calendar event from spreadsheet

我在電子表格中有以下列:

Email 首字母 名稱 Position 主題 23 年 2 月 19 日 22.02.23 28.02.23
ab@gmail.com 迭戈 弗洛雷斯 AB C 1個
bc@gmail.com 亞歷克斯 弗洛雷斯 D B F 1個
c.d@gmail.com 迭戈 桑切斯 國標 1個
de@gmail.com 亞歷克斯 桑切斯 面子書 G 1個

該電子表格與以下谷歌應用程序腳本鏈接:

function createCalendarEvents() {
  var spreadsheetId = '1NQULPeaxoaAaNWU4ojapb4R50JEdl62Ip2e9yjUB_sw';
  var calendarId = "diego.flores@gmail.com";
  var sheetName = '2';

  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
  var calendar = CalendarApp.getCalendarById(calendarId);
  var data = sheet.getDataRange().getValues();
  var headers = data.shift();
  // console.log("spreadsheet: "+spreadsheet);
  // console.log("sheet: "+sheet);
  // console.log("calendar: "+calendar);
  // console.log("headers: "+headers);
  // console.log("data: "+data);
  console.log("email: "+email);
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var email = row[0];
    var firstName = row[1];
    var lastName = row[2];
    var position = row[3];
    var topic = row[4];
    console.log("email: "+email);
    for (var j = 5; j < row.length; j++) {
      if (row[j] === '1') {
        var date = new Date(headers[j]);
        var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
        var event = calendar.createEvent(eventTitle, date, date);
        event.setLocation("Office");
        event.addEmailReminder(15);
      }
    }
  }
}

當日期列中的列包含 1 時,腳本應創建一個事件,其中填充日歷 diego.flores@gmail.com 中行的信息。 但是它不起作用,沒有創建日歷條目。 我 100% 確定我擁有日歷的授權並且腳本已連接到正確的工作表。 日歷和電子表格 API 已激活。 也許有人可以給我提示或提示。 謝謝!

從您的回復和腳本中,

  • 我認為在你的腳本中, if (row[j] === '1') {應該是if (row[j] === 1) {row[j]是一個數字時,或者if (row[j] == '1') { .

    • 我認為您當前問題No calendar event is created by executing the script的原因可能是由於此。
  • 根據您的示例數據,我不確定您的 header 標題中的19.02.2322.02.2328.02.23的日期是否為日期 object。

從上面的情況來看,下面的修改怎么樣?

從:

if (row[j] === '1') {
  var date = new Date(headers[j]);
  var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
  var event = calendar.createEvent(eventTitle, date, date);
  event.setLocation("Office");
  event.addEmailReminder(15);
}

到:

if (row[j] == "1") {
  var date = headers[j] instanceof Date ? headers[j] : Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yy");
  var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
  var event = calendar.createEvent(eventTitle, date, date);
  event.setLocation("Office");
  event.addEmailReminder(15);
}
  • 如果您的 header 標題中的19.02.2322.02.2328.02.23的日期是日期 object,則var date = headers[j]; 可以用來代替{var date = headers[j] instanceof Date? headers[j]: Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yyyy"); {var date = headers[j] instanceof Date? headers[j]: Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yyyy"); .

參考:

暫無
暫無

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

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