Таблицы Google, дающие разрешение пользователю с помощью скрипта Google - PullRequest
0 голосов
/ 29 мая 2020

Моя цель:

Каждый раз, когда я создаю новую электронную таблицу, она должна автоматически давать разрешение редактору «TheEmailIwant@gmail.com».

Исследование:

  function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  ss.addEditor('TheEmailIwant@gmail.com');
  }

Проблема: На самом деле я использую автоматизацию селена для создания электронной таблицы и распространяю чтение значений из нее, но проблема распространяется только на чтение электронных таблиц, совместно используемых с сервисная учетная запись ...

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

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

1 Ответ

2 голосов
/ 29 мая 2020

Если вы создаете дополнительную электронную таблицу и предполагаете, что файлы, которые вы создаете, находятся в определенной папке c, следующий код поможет вам перечислить файлы ( это необязательно в сценарии, но может быть полезным ) и одновременно отправить их на указанный адрес электронной почты. Вы можете запустить сценарий из созданного меню (My Files) в электронной таблице или установить триггер для его автоматического запуска в указанное c раз / дней:

Итак, вам нужно:

  • Чтобы создать новую электронную таблицу для перечисления файлов
  • Получите идентификатор этой таблицы (// https://drive.google.com/drive/folders/ ИДЕНТИФИКАТОР ЗДЕСЬ )
  • Получить идентификатор папки, содержащей созданные таблицы (https://docs.google.com/spreadsheets/d/ ID ЗДЕСЬ / редактировать)
  • Установите адрес электронной почты для обмена файлами с
  • Запускайте скрипт каждый раз вручную или настройте триггер для автоматического выполнения

Код :

   // ---------- Menu ----------
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Files')
  .addItem('List & Add Permission', 'ListFilesandAddEditor')
  .addToUi();
}

function ListFilesandAddEditor() {

  var folder = DriveApp.getFolderById('FOLDER ID GOES HERE');  
  var sheetId = "SPREADHSEET ID GOES HERE";
  var ss = SpreadsheetApp.openById(sheetId);

  // specify the sheet to write the DATA, here it's Sheet1

  var sheet = ss.getSheetByName("Sheet1"); 
  sheet.getRange("A2:B").clear();

  var output = [];
  var file;
  var name;
  var link;
  var fileId;
  var contents = folder.getFiles();
  while(contents.hasNext()) {
    file = contents.next();    
    data = [
      name =  file.getName(),
      link =  file.getUrl(),
      fileId = file.getId(),
      DriveApp.getFileById(fileId).addEditor('mynamel@gmail.com'),
    ];

    output.push([name, link]);

    // write data to the sheet  
    sheet.getRange(2, 1, output.length, output[0].length).setValues(output);  
  }  
};
...