Как использовать CalendarApp.getCalendarById в диапазоне - PullRequest
0 голосов
/ 29 января 2020

Все еще очень зеленое за ушами, когда дело доходит до скрипта Google, но, о, так взволнован возможностями, которые они висят передо мной.

Вариант использования : вывести встречи из календаря Google примерно с 70 адресами электронной почты (список является фактором кадровой ситуации), а затем объединить их на листе Google.

Проблема : работает нормально, когда я использую календарь команды stati c (который, однако, не используется 69 моими коллегами) или один адрес электронной почты (то есть, наборы разрешений не являются проблемой). Просто не могу заставить getCalendarById работать, когда я определяю диапазон.

Вот где я нахожусь:

Работает:

var ss = SpreadsheetApp.openById("xxxxxxx-XxqMb4E3LW2U1qoGZ6I");
var ss_raw = ss.getSheetByName("Raw");
var ss_time = ss.getSheetByName("Time");
var calendar = CalendarApp.getCalendarById("xxx.com_nfl666rclt5jkhfeb5i6n1f17s@group.calendar.google.com");
...

Не работает («нулевые значения»):

var ss = SpreadsheetApp.openById("xxxxxxx-XxqMb4E3LW2U1qoGZ6I");
var ss_raw = ss.getSheetByName("Raw");
var ss_time = ss.getSheetByName("Time");
var ss_emails = ss.getSheetByName("Emails");
var calendar = CalendarApp.getCalendarById(ss_emails.getRange(A1:A100).getValues);
...

Пробовал использовать var-for, но, похоже, не может заставить его работать так же.

Есть идеи? Ценим помощь!

Ура

1 Ответ

0 голосов
/ 29 января 2020

Почему getCalendarById(ss_emails.getRange(A1:A100).getValues); не работает?

Поскольку getCalendarById() ожидает один идентификатор, почему вы передаете ему двумерный массив, содержащий 100 идентификаторов.

Полагаю, вы хотите получить все календари для дальнейшей работы с ними (например, извлечение всех событий).

Для этого вам нужно реализовать al oop и выполнить итерацию всех идентификаторов по отдельности.

Помните, что getValues() (не забывайте скобки!) Возвращает вам двумерный массив значений, как описано здесь - даже если ваши значения содержатся в одной строке.

Итак во-первых, вам нужно уменьшить вложенный 2D-массив до 1D-массива, например, указав var values=ss_emails.getRange("A1:A100").getValues()[0].

а во-вторых, как уже упоминалось, l oop через 1D массив идентификаторов календаря.

Образец:

var ss = SpreadsheetApp.openById("xxxxxxx-XxqMb4E3LW2U1qoGZ6I");
var ss_raw = ss.getSheetByName("Raw");
var ss_time = ss.getSheetByName("Time");
var ss_emails = ss.getSheetByName("Emails");
var values = ss_emails.getRange(A1:A100).getValues()[0];
for (var i = 0; i < values.length; i++){
  var calendar = CalendarApp.getCalendarById(values[i]);
  ...
  }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...