不确定这是否可行,但我之前收到的帮助是巨大的,所以它可以带来什么伤害。
我有一个非常适合将信息从谷歌电子表格导入我的日历的脚本。问题是我有3个不同的信息列(我希望将其他目的分开),我希望将其导入到我的日历的描述中。这可能不是正确的问题,但是有没有办法创建一个嵌套变量来导入所有3行/列?
这是我的脚本,但如果我可以将row [6] [8] [9]导入描述中,那将会很棒......
function importCalendar() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 2; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
var data = range.getValues();
var calId = "CALENDAR ID";
var cal = CalendarApp.getCalendarById(calId);
for (i=0; i<data.length; i++) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var startDate = row[0]; // First column
var title = row[3]; // Second column
var location = row[4];
var description = row[6];
var id = row[7]; // 8th column == eventId
var advancedArgs ={description: description, location: location};
// Check if event already exists, update it if it does
try {
var event = cal.getEventSeriesById(id);
}
catch (e) {
// do nothing - we just want to avoid the exception when event doesn't exist
}
if (!event) {
var newEvent = cal.createAllDayEvent(title, new Date(startDate), advancedArgs).getId();
row[7] = newEvent; // Update the data array with event ID
}
else {
event.setTitle(title);
event.setDescription(description);
event.setLocation(location);
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(1);
event.setRecurrence(recurrence, new Date(startDate));
}
debugger;
}
// Record all event IDs to spreadsheet
range.setValues(data);
}
答案 0 :(得分:1)
嗯,你当然可以制作一个二维数组,或者更确切地说是一个n维数组。请采取以下措施:
var table = [['Fruits', 'Veggies', 'SomethingElse'], ['Apple', 'Banana', 'Peach'], ['Carrot', 'Cucumber', 'Raddish'], [['Animals', 'People'], ['Lion', 'Tiger', 'Bear'], ['Weird Al', 'George Lopez']]];
Console.log(table[0]) //Returns the array ['Fruits', 'Veggies', 'SomethingElse']
这可能很有用,但您可能希望列名是数组中的第一个元素,如下所示:
var table = [['Fruits', 'Apple', 'Banana', 'Peach'], ['Veggies', 'Carrot', 'Cucumber', 'Raddish'], ['SomethingElse', ['Animals', 'People'], ['Lion', 'Tiger', 'Bear'], ['Weird Al', 'George Lopez']]];
Console.log(table[0]) //Returns the array ['Fruits', 'Apple', 'Banana', 'Peach']
这可能是你想要的。现在访问的东西非常简单!
var Fruits = table[0] //For simplicity
console.log(Fruits[0]) //Fruits
console.log(Fruits[1]) //Apple
console.log(Fruits[2]) //Banana
same as
console.log(table[0][0])
console.log(table[0][1])
console.log(table[0][2])
还有你的n维数组!
答案 1 :(得分:1)
您似乎只想在description
中引用多个列值。最好我可以告诉这只是基本的字符串连接。
所以让我们把你想要的元素合并到一个字符串中,至少避免一大堆+
。是否希望它们在同一行或单独的行上分隔显示取决于您。只需要更改连接中的值。
var description = [row[6],row[8],row[9]].join('\n')
或者如果你想要它们在同一行
var description = [row[6],row[8],row[9]].join(' ')
我不知道在一次调用中调用多个非顺序元素的任何锯齿形符号。我们只创建一个新数组,以便我们可以调用join。