Скрипт - Добавить / удалить Google Sheet Editors для списка - PullRequest
0 голосов
/ 05 марта 2020

Пример документа: Ссылка

У меня был рабочий сценарий, который добавлял или удалял редакторы из указанного идентификатора листа в течение хороших нескольких месяцев, пока недавно он не начал выдавать ошибку :

Exception: The parameters (number[]) don't match the method signature for SpreadsheetApp.Spreadsheet.removeEditor.

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

Сценарий выглядит следующим образом:

  function runEmailAccess(){
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sEditors = ss.getSheetByName('Editors');
  var sheet = SpreadsheetApp.openById("SHEETID");
  
  var nAddEditor = sEditors.getRange('A2').getValue();
  if (nAddEditor != 0){
  var vAddEditor = sEditors.getRange('A3:A'+nAddEditor).getValues();
  sheet.addEditors(vAddEditor);
   }
  
  var nRemoveEditor = sEditors.getRange('B2').getValue();
  if (nRemoveEditor != 0){
  var vRemoveEditor = sEditors.getRange('B3:B'+nRemoveEditor).getValues();
  
  for (j=0;j<vRemoveEditor.length;j++) {
    sheet.removeEditor(vRemoveEditor[j])
  }
  }
  
}

Сценарий берет номер строки последнего электронного письма в списке из строки 2, а затем передает электронные письма для строки 3 в эту строку через .getRange.

enter image description here

Любая помощь по этому вопросу будет очень полезна. Спасибо.

1 Ответ

1 голос
/ 06 марта 2020

vRemoveEditor - 2D массив. Вы индексируете только во внешний массив с vRemoveEditor[j]. Вам нужно индексировать оба, чтобы получить примитивные значения: vRemoveEditor[j][0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...