Как защитить паролем страницу Google - PullRequest
0 голосов
/ 24 мая 2019

У меня есть Google Sheet с данными, которые защищены - пользователь не может редактировать лист.Когда функция AskUser запущена, появляется всплывающее окно, которое спрашивает пользователя, хотят ли они «снять защиту» листа.Когда они нажимают «Нет», им говорят, что ничего не произойдет.Когда они нажимают «Да», им говорят, что им нужно ввести пароль.У меня три проблемы:

  1. Я не знаю, как установить пароль.

  2. Я не знаю, как вызвать диалогполе, в котором пользователь может ввести пароль.

  3. Я не знаю, как заставить его проверить, является ли это правильный пароль.

Я пытался загрузить листы, защищенные паролем, и проверить код, но они используют странный формат HTML.Вот что у меня есть:

  SpreadsheetApp.getUi() 
      .createMenu('Custom Menu')
      .addItem('Show alert', 'showAlert')
      .addToUi();
}

function AskUser() {
  var ui = SpreadsheetApp.getUi(); 

  var result = ui.alert(
     'Worksheet Protected!',
     'Do you want to unprotect the worksheet?',
      ui.ButtonSet.YES_NO);


  if (result == ui.Button.YES) {
    //This is where I want the password dialogue box prompt
    ui.alert('The worksheet will be unprotected after you submit the right password.');
  } else {

    ui.alert('The worksheet will not be unprotected.');
  }
}

Я совершенно новичок в Javascript и Google Sheets.

1 Ответ

0 голосов
/ 24 мая 2019

Установка пароля

Использование PropertiesService для хранения пароля

function setPassword(password) {
  let prop = PropertiesService.getUserProperties();
  prop.setProperty("sheetpassword", password);
}

Формирование пароля

Создать HTML-форму в файле, например.passwordform.

Затем, когда вы хотите показать форму, позвоните createHtmlOutputFromFile

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.show(HtmlService.createHtmlOutputFromFile('passwordform'));

При отправке формы вызовите функцию проверки пароля

onclick='google.script.run.checkPassword(document.getElementById("passwordInput"));'

Проверка пароля

Получите собственность от PropertiesService и посмотрите, равняется ли она

function checkPassword(password) {
  let prop = PropertiesService.getUserProperties();
  if (prop.getProperty("sheetpassword") === null || prop.getProperty("sheetpassword") !== password) {
    return false; // Doesn't match DB
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...