Я довольно новичок в Google Apps Script (а не инженер).
Я работаю над инструментом для анализа своего календаря, и у меня есть массив, который называется "события", который содержит подробную информацию о каждом Встреча, которую я проводил за определенный период времени.
Я хочу создать НОВЫЙ массив, который НЕ содержит дубликатов, но вместо этого имеет счетчик для количества дубликатов. Например:
Массив событий:
Index: Name, Duration, Recurring?
1: "Lunch", 60, "Yes"
2: "Catchup with Tom", 30, "Yes"
3: "Quick update", 60, "No"
4: "Lunch", 60, "Yes"
5: "Catchup with Tom", 30, "Yes"
Новый массив:
Index: Name, Duration, COUNT
1: "Lunch", 60, 2
2: "Catchup with Tom, 30, 2
3: "Quick update", 60, 1
Я нашел какой-то удивительный код JavaScript, который использует «Reduce», но пример для одномерного массива. Может ли он быть изменен, чтобы быть многомерным?
Примечание: в моем фактическом коде я сравниваю «Имя» каждого собрания И «Описание», чтобы найти дубликаты (они не показаны в моем упрощенном примере выше) .
var ar = ['a', 'a', 'b', 'c', 'c'];
var result = ar.reduce(function(r, e) {
r[e] = (r[e] || 0) + 1;
return r;
}, {});
console.log(result)
Обновление
У меня возникли некоторые ошибки при попытке запустить ответ из 'tehhowch', но я думаю Я их исправил. К сожалению, в журнале ничего не появляется, когда я пытаюсь запустить свой код.
Вот мой новый код:
...
var mycal = stp.getRange("B1").getValue(); // e-mail address for calendar
var cal = CalendarApp.getCalendarById(mycal);
var cal_start = stp.getRange("B2").getValue(); // start date
var cal_end = stp.getRange("B3").getValue(); // end date
var events = cal.getEvents(new Date(cal_start), new Date(cal_end));
var nameIndex = 0;
var descriptionIndex = 1;
var obj =[]; // Added this after answer to fix "undefined error"
var summary = events.reduce(function(obj, row) {
var key = row[nameIndex] + ", " + row[descriptionIndex];
obj[key] = (obj[key]++ || 0); // Fixed this line from answer?
return obj;
}, {});
Logger.log(obj);
...