0

Не уверен, что это возможно, но помощь, которую я получил ранее, была огромной, так что это может повредить.Возможно ли создать вложенную переменную?

У меня есть сценарий, который отлично работает для импорта информации из электронной таблицы google в мой календарь. Проблема в том, что у меня есть 3 разных столбца информации (которые я хотел бы сохранить отдельно для других целей), которые я хотел бы импортировать в описание моего календаря. Это могут быть не правильные вопросы, но есть ли способ создать вложенную переменную, которая будет импортировать все 3 строки/столбцы?

Это сценарий, у меня есть, но было бы удивительно, если бы я мог бы импортировать ряд [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

Не могли бы вы просто конкатенировать ряды? Возможно, раскол с новыми линиями? Мой javascript слаб, но ... 'var description = [row [6], row [8], row [9]]. Join ('\ n')' – Matt

+0

Thats awesome !! Большое вам спасибо за помощь! – Mary

+0

Это работало для вас тогда? – Matt

ответ

1

Ну можно, конечно, сделать 2- Размерный массив, или, скорее, 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

Похоже, вы просто хотите ссылаться на несколько значений столбцов в своем description. Лучше всего я могу сказать, что это просто базовая конкатенация строк.

Так что давайте возьмем нужные элементы и объединим их в одну строку и, по крайней мере, избегаем целой группы +. Независимо от того, хотите ли вы, чтобы они отображались в одной строке или на отдельных строках, зависит от вас. Просто нужно изменить значение в соединении.

var description = [row[6],row[8],row[9]].join('\n') 

Или, если вы хотите, чтобы они на те же линии

var description = [row[6],row[8],row[9]].join(' ') 

Я не знаю ни одного рваного обозначение для вызова несколько не последовательных элементов в одном кадре. Мы просто создаем новый массив, чтобы мы могли назвать join.

Смежные вопросы