Как я могу узнать, доступен ли Google Лист? - PullRequest
1 голос
/ 12 апреля 2020

Я разрабатываю сценарий Google Sheets, который для его работы должен быть открыт для общего доступа. Есть ли способ узнать, является ли Лист доступным через скрипт приложения? (Обратите внимание, я не заинтересован в получении общих настроек для самого сценария, а для листа).

function onInstall() {
  onOpen();
}

function onOpen() {
  SpreadsheetApp.getUi().createAddonMenu().addItem("myitem", "item").addToUi(); 
}

function item(){
  var title = 'item';
  var html = HtmlService.createTemplateFromFile('item');
  var htmlOutput = html.evaluate();
  htmlOutput.setTitle(title).setWidth(100).setHeight(150)
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, title);
}


Ответы [ 2 ]

5 голосов
/ 12 апреля 2020

Вам потребуется использовать службу Drive или расширенную службу Drive.

Допустим, ваш сценарий привязан к электронной таблице. Следующая функция регистрирует значение true, если электронная таблица является общей, и в противном случае она регистрирует значение false.

function myFunction() {
  Logger.log(isShared());
}


function isShared(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var id = spreadsheet.getId();
  var file = DriveApp.getFileById(id);
  var editors = file.getEditors();
  var viewers = file.getViewers();
  var sharing = file.getSharingPermission();
  return editors.length > 0 || viewers.lenght > 0 || sharing !==  DriveApp.Permission.NONE;

}

Если вас интересует только то, является ли электронная таблица общедоступной для кого-либо со ссылкой (при условии, что электронная таблица была создан с личного кабинета)

function isSharedPublicly(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var id = spreadsheet.getId();
  var file = DriveApp.getFileById(id);
  var sharing = file.getSharingPermission();
  return sharing !==  DriveApp.Permission.NONE;

}
1 голос
/ 12 апреля 2020
function findPublicSpreadsheets() {
  const files=DriveApp.getFilesByType(MimeType.GOOGLE_SHEETS);
  while(files.hasNext()) {
    let file=files.next();
    if(file.getSharingAccess()==DriveApp.Access.ANYONE) {
      //is this is a file your looking for?
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...