Как изменить права доступа к электронной таблице с редактора на просмотрщика? - PullRequest
0 голосов
/ 17 сентября 2018

Вот сценарий в электронной таблице, который запускает редактор:

function ed2view() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var eds = ss.getEditors();
  var ed = eds[1];
  ss.removeEditor(ed);
  ss.addViewer(ed);
}

Он не работает, потому что, по-видимому, к тому времени addViewer () права уже были отозваны.

Если просто addViewer (), без предыдущего removeEditor (), также не работает: Если пользователь уже был в списке редакторов, этот метод не действует .

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

Посоветуйте, пожалуйста, как правильно изменить права доступа.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Задача имеет решение, если вы не манипулируете доступом через файл электронной таблицы, а используете Advanced Drive Service.

function run() {
  driveChangeMeRole_(FILE_ID, EMAIL);
}

/**
 * Downgrade you in the rights from the editor to the viewer
 * @param {string} fileId The file id
 * @param {string} email You can pass your email and downgrade youself
 * @returns {void}
 */
function driveChangeMeRole_(fileId, email) {
  var permissionId = Drive.Permissions.getIdForEmail(email);
  var resource = Drive.newPermission();
  resource.role = 'reader';
  /* You can stay as a commenter
  resource.additionalRoles = ['commenter']; */
  Drive.Permissions.update(resource, fileId, permissionId.id);
}

Вам необходимо включить Drive API: Редактор скриптов: Ресурсы / Расширенные функции и в Консоль API Google . Задача была решена @oshilaer здесь

0 голосов
/ 17 сентября 2018

попробуйте это, если вы хотите, чтобы редактор изменил статус другого редактора:

function ed2view() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var editorArray = ss.getEditors();
  var userMail = editorArray[1].getEmail();
  ss.removeEditor(editorArray[1]);
  ss.addViewer(userMail);
}

В вашем коде вы пытаетесь передать в качестве аргумента объект User вместо адреса электронной почты типа string в addViewer()

Если вы редактор, а не владелец, и вы хотите изменить свой статус разрешений с помощью App Script, то вы просто не можете этого сделать, но редактор может перейти в настройки общего доступа к электронной таблице и изменить свой статус разрешений на «читать». только потом подтвердите.

К сожалению, вы не можете сделать это программно.

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