应用程序脚本 - 仅从特定颜色的日历中获取事件

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

在 Google 的 App Script 中编写程序以将日历同步到工作表。 每当更新日历时,该程序都会成功地将日历中的事件添加到电子表格中,但是我想让它更具体。

有没有办法设置它,使脚本只适用于日历的特定颜色? 我只希望它添加添加到日历中的蓝色事件而不是红色事件 - 以避免将每个人的年假上传到事件电子表格。

我想将所有内容都保留在同一个日历中,但只运行特定颜色的功能。

if 语句也有问题。以下似乎有效:

//DOES WORK :)
 if (description.includes("ASM Salford")) {
  asmsalfordsheet.getRange(i+12,1).setValue(startTime);
  asmsalfordsheet.getRange(i+12,2).setValue(title);
}

这很好,但是如果我尝试通过添加 OR (||) 子句或通配符使其更加用户友好,它就不起作用,但不会抛出任何错误消息。例子:

//DOES NOT WORK BUT NO ERROR MESSAGE :(
 if (description.includes("ASM Salford" || "Salford")) {
  asmsalfordsheet.getRange(i+12,1).setValue(startTime);
  asmsalfordsheet.getRange(i+12,2).setValue(title);
}
// ALSO DOES NOT WORK BUT NO ERROR MESSAGE :(
 if (description.includes("*ASM*")) {
  asmsalfordsheet.getRange(i+12,1).setValue(startTime);
  asmsalfordsheet.getRange(i+12,2).setValue(title);
}

有什么想法吗?我想添加一些通配符和 ||条款,以便如果在日历中输入详细信息的人出现拼写错误、未完整填写、大写等情况下,它有更多机会提取该描述

任何帮助将不胜感激,因为我是 Apps Script 的新手。

我的完整代码:

function getCalendarEvents() {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var monitoringsheet = spreadsheet.getSheetByName("Monitoring- Apr 23-Mar 24");
  var asmsalfordsheet = spreadsheet.getSheetByName("ASM Salford");
  var asmmcrsheet = spreadsheet.getSheetByName("ASM Mcr"); 
  var ccetamesidesheet = spreadsheet.getSheetByName("CCE Tameside");
  var lenjohnsonsheet = spreadsheet.getSheetByName("Len Johnson");
  var wmwsalfordsheet = spreadsheet.getSheetByName("WMW Salford");
  var radleedssheet = spreadsheet.getSheetByName("Rad- Leeds");
  var consentsheet = spreadsheet.getSheetByName("Consent");
  var bandbleedssheet = spreadsheet.getSheetByName("B&B Leeds, Enhanced (Creative Response)");
  var radsheffieldsheet = spreadsheet.getSheetByName("Rad- Sheffield");
  var lancssheet = spreadsheet.getSheetByName("Rad- Lancs");
  var radmcrsheet = spreadsheet.getSheetByName("Rad- Mcr");
  var radliverpoolsheet = spreadsheet.getSheetByName("Rad- Lpool");
  var radcalderdalesheet = spreadsheet.getSheetByName("Rad- Calderdale");
  var radderbysheet = spreadsheet.getSheetByName("Rad-Derby");
  var radbradfordsheet = spreadsheet.getSheetByName("Rad- Bradford");
  var stcatherinessheet = spreadsheet.getSheetByName("St Catherines");
  var radburnleyblackpoolsheet = spreadsheet.getSheetByName("Rad- Burnley Blackpool");
  var cal = CalendarApp.getCalendarById('HIDDEN FOR SECURITY');
  var events = cal.getEvents(new Date("4/6/2023 1:00 AM"), new Date("4/5/2024 11:59 PM"));


  for (i=0; i<events.length; i++) {
    var title = events[i].getTitle();
    var startTime = events[i].getStartTime();
    var endTime = events[i].getEndTime();
    var location = events[i].getLocation();
    var description = events[i].getDescription();

  monitoringsheet.getRange(i+3,2).setValue(title);
  monitoringsheet.getRange(i+3,3).setValue(startTime);
  monitoringsheet.getRange(i+3,4).setValue(endTime);
  monitoringsheet.getRange(i+3,6).setValue(location);
  monitoringsheet.getRange(i+3,7).setValue(description);

  if (description.includes("ASM Salford")) {
  asmsalfordsheet.getRange(i+12,1).setValue(startTime);
  asmsalfordsheet.getRange(i+12,2).setValue(title);
  asmsalfordsheet.getRange(i+12,4).setValue(location);
  asmsalfordsheet.getRange(i+12,7).setValue(startTime);
  asmsalfordsheet.getRange(i+12,8).setValue(endTime);
  }

  if (description.includes("ASM Mcr")) {
  asmmcrsheet.getRange(i+13,1).setValue(startTime);
  asmmcrsheet.getRange(i+13,2).setValue(title);
  asmmcrsheet.getRange(i+13,4).setValue(location);
  asmmcrsheet.getRange(i+13,7).setValue(startTime);
  asmmcrsheet.getRange(i+13,8).setValue(endTime);
  }

  if (description.includes("CCE Tameside")) {
  ccetamesidesheet.getRange(i+9,1).setValue(startTime);
  ccetamesidesheet.getRange(i+9,2).setValue(title);
  ccetamesidesheet.getRange(i+9,4).setValue(location);
  ccetamesidesheet.getRange(i+9,7).setValue(startTime);
  ccetamesidesheet.getRange(i+9,8).setValue(endTime);
  }

  if (description.includes("Len Johnson")) {
  lenjohnsonsheet.getRange(i+11,1).setValue(startTime);
  lenjohnsonsheet.getRange(i+11,2).setValue(title);
  lenjohnsonsheet.getRange(i+11,4).setValue(location);
  lenjohnsonsheet.getRange(i+11,7).setValue(startTime);
  lenjohnsonsheet.getRange(i+11,8).setValue(endTime);
  }

  if (description.includes("WMW Salford")) {
  wmwsalfordsheet.getRange(i+6,1).setValue(startTime);
  wmwsalfordsheet.getRange(i+6,2).setValue(title);
  wmwsalfordsheet.getRange(i+6,4).setValue(location);
  wmwsalfordsheet.getRange(i+6,7).setValue(startTime);
  wmwsalfordsheet.getRange(i+6,8).setValue(endTime);
  }

  if (description.includes("Rad- Leeds")) {
  radleedssheet.getRange(i+12,1).setValue(startTime);
  radleedssheet.getRange(i+12,2).setValue(title);
  radleedssheet.getRange(i+12,4).setValue(location);
  radleedssheet.getRange(i+12,7).setValue(startTime);
  radleedssheet.getRange(i+12,8).setValue(endTime);
  }

  if (description.includes("Consent")) {
  consentsheet.getRange(i+3,1).setValue(startTime);
  consentsheet.getRange(i+3,2).setValue(title);
  consentsheet.getRange(i+3,4).setValue(location);
  consentsheet.getRange(i+3,7).setValue(startTime);
  consentsheet.getRange(i+3,8).setValue(endTime);
  }

  if (description.includes("B&B Leeds, Enhanced (Creative Response)")) {
  bandbleedssheet.getRange(i+22,1).setValue(startTime);
  bandbleedssheet.getRange(i+22,2).setValue(title);
  bandbleedssheet.getRange(i+22,4).setValue(location);
  bandbleedssheet.getRange(i+22,7).setValue(startTime);
  bandbleedssheet.getRange(i+22,8).setValue(endTime);
  }

  if (description.includes("Sheffield")) {
  radsheffieldsheet.getRange(i+10,3).setValue(startTime);
  radsheffieldsheet.getRange(i+10,4).setValue(title);
  radsheffieldsheet.getRange(i+10,6).setValue(location);
  radsheffieldsheet.getRange(i+10,9).setValue(startTime);
  radsheffieldsheet.getRange(i+10,10).setValue(endTime);
  }

  if (description.includes("Lancs")) {
  lancssheet.getRange(i+8,1).setValue(startTime);
  lancssheet.getRange(i+8,2).setValue(title);
  lancssheet.getRange(i+8,4).setValue(location);
  lancssheet.getRange(i+8,7).setValue(startTime);
  lancssheet.getRange(i+8,8).setValue(endTime);
  }

  if (description.includes("Rad- Mcr")) {
  radmcrsheet.getRange(i+12,1).setValue(startTime);
  radmcrsheet.getRange(i+12,2).setValue(title);
  radmcrsheet.getRange(i+12,4).setValue(location);
  radmcrsheet.getRange(i+12,7).setValue(startTime);
  radmcrsheet.getRange(i+12,8).setValue(endTime);
  }

  if (description.includes("Lpool")) {
  radliverpoolsheet.getRange(i+11,4).setValue(startTime);
  radliverpoolsheet.getRange(i+11,5).setValue(title);
  radliverpoolsheet.getRange(i+11,7).setValue(location);
  radliverpoolsheet.getRange(i+11,10).setValue(startTime);
  radliverpoolsheet.getRange(i+11,11).setValue(endTime);
  }

  if (description.includes("Calderdale")) {
  radcalderdalesheet.getRange(i+8,1).setValue(startTime);
  radcalderdalesheet.getRange(i+8,2).setValue(title);
  radcalderdalesheet.getRange(i+8,4).setValue(location);
  radcalderdalesheet.getRange(i+8,7).setValue(startTime);
  radcalderdalesheet.getRange(i+8,8).setValue(endTime);
  }

  if (description.includes("Derby")) {
  radderbysheet.getRange(i+10,2).setValue(startTime);
  radderbysheet.getRange(i+10,3).setValue(title);
  radderbysheet.getRange(i+10,5).setValue(location);
  radderbysheet.getRange(i+10,8).setValue(startTime);
  radderbysheet.getRange(i+10,9).setValue(endTime);
  }

  if (description.includes("Bradford")) {
  radbradfordsheet.getRange(i+10,1).setValue(startTime);
  radbradfordsheet.getRange(i+10,2).setValue(title);
  radbradfordsheet.getRange(i+10,4).setValue(location);
  radbradfordsheet.getRange(i+10,7).setValue(startTime);
  radbradfordsheet.getRange(i+10,8).setValue(endTime);
  }

  if (description.includes("St Catherines")) {
  stcatherinessheet.getRange(i+7,1).setValue(startTime);
  stcatherinessheet.getRange(i+7,2).setValue(title);
  stcatherinessheet.getRange(i+7,4).setValue(location);
  stcatherinessheet.getRange(i+7,7).setValue(startTime);
  stcatherinessheet.getRange(i+7,8).setValue(endTime);
  }

  if (description.includes("Burnley")) {
  radburnleyblackpoolsheet.getRange(i+17,1).setValue(startTime);
  radburnleyblackpoolsheet.getRange(i+17,2).setValue(title);
  radburnleyblackpoolsheet.getRange(i+17,4).setValue(location);
  radburnleyblackpoolsheet.getRange(i+17,7).setValue(startTime);
  radburnleyblackpoolsheet.getRange(i+17,8).setValue(endTime);
  }

}
  

}

[SCREENSHOT](https://i.stack.imgur.com/ndLAs.png)

javascript if-statement google-apps-script google-calendar-api wildcard
1个回答
0
投票

在您的事件对象和过滤器事件中,您可以使用

getColor()
方法获取颜色 并根据它过滤颜色

© www.soinside.com 2019 - 2024. All rights reserved.