我有将近0的编程经验。我想将一个范围从Google Spreadsheets作为数组导入,检查数组中的每个值是否为True或False,如果为True,则创建一个All Day Calendar Event,并将All Day Calendar Event的标题作为同一值在另一个数组中的行。
示例:
表
应该在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)
答案 0 :(得分:0)
也许这将帮助您入门:
此功能将为底部电子表格中所有选中的行创建全天活动。
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]))
}
});
}
电子表格: