【问题标题】:Google Apps Script - Create Calendar Event from SpreadsheetGoogle Apps 脚本 - 从电子表格创建日历事件
【发布时间】:2020-05-18 15:20:23
【问题描述】:

我在编程方面的经验接近 0。我想从 Google 电子表格中导入一个范围作为数组,检查数组中的每个值是否为真或假,如果为真,则创建一个全天日历事件,其中全天日历事件的标题是相同的值行在不同的数组中。

例子:

表格

  • _:5/11、5/12、5/13
  • 答:对,错,对
  • B:对,错,错
  • C: 对,对,对

应在 5/11 和 5/13 上创建名为“A”的日历事件,在 5/11 上创建名为“B”的日历事件,在 5/11、5/12 和 5/13 上创建名为“C”的日历事件

到目前为止,这已经奏效,但效率不高。有人可以帮我优化吗?

var Checked = spreadsheet.getRange("C5:I20").getValues();
var Person = spreadsheet.getRange("B5:B20").getValues();

var mon = new Date(Object(spreadsheet.getRange("C3").getValues()));
var tue = new Date(Object(spreadsheet.getRange("D3").getValues()));
var wed = new Date(Object(spreadsheet.getRange("E3").getValues()));
var thu = new Date(Object(spreadsheet.getRange("F3").getValues()));
var fri = new Date(Object(spreadsheet.getRange("G3").getValues()));
var sat = new Date(Object(spreadsheet.getRange("H3").getValues()));
var sun = new Date(Object(spreadsheet.getRange("I3").getValues()));      

for (x=0; x<Checked.length; x++) {  
  for (x=0; x<Person.length; x++) {
      var shift = Checked[x];
      var Names = Person[x];

      if(shift[0] = 1)
      eventCal.createAllDayEvent(Object(Names), mon);
      if(shift[1] = 1)
      eventCal.createAllDayEvent(Object(Names), tue);
      if(shift[2] = 1)
      eventCal.createAllDayEvent(Object(Names), wed);
      if(shift[3] = 1)
      eventCal.createAllDayEvent(Object(Names), thu);
      if(shift[4] = 1)
      eventCal.createAllDayEvent(Object(Names), fri);
      if(shift[5] = 1)
      eventCal.createAllDayEvent(Object(Names), sat);
      if(shift[6] = 1)
      eventCal.createAllDayEvent(Object(Names), sun);
      Utilities.sleep(1000)

【问题讨论】:

  • 很难说你用这个去哪里了。也许您的电子表格的图像可能会有所帮助,并且可以简单地解释您想要做什么。

标签: javascript arrays google-apps-script


【解决方案1】:

也许这会帮助你开始:

此函数将为底部电子表格中所有选中的行创建全天事件。

function myfunction() {
  const cal=CalendarApp.getCalendarById('id');
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1');
  const rg=sh.getRange('B5:E20');
  var vA=rg.getValues();
  vA.forEach(function(r,i){
    if(r[0]) {
      cal.createAllDayEvent(r[1], new Date(r[2]), new Date(r[3]))
    }
  }); 
}

电子表格:

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多