Могу ли я использовать Slides API, чтобы добавить диалог «Согласен с условиями», прежде чем разрешить зрителю доступ к презентации Slides? - PullRequest
0 голосов
/ 30 января 2020

У меня есть презентация Google Slides, которую я хотел бы отправить с просьбой согласиться с «Условиями» перед просмотром. (Диалоговое окно будет содержать внешнюю ссылку на легальный мелкий шрифт.)

Я вижу, что с помощью Google App Script добавление диалогового окна возможно возможно , но если его можно настроить в этом манера неясна для меня.

Заранее благодарим за любую помощь в этом.

1 Ответ

1 голос
/ 31 января 2020
  • Вы хотите открыть диалоговое окно, когда пользователи открывают Google Slides.
    • В этом случае пользователи входят в каждую учетную запись Google.
  • Вы хотите, чтобы пользователи отображали «Условия и положения» по внешней ссылке.
  • Когда пользователи нажимают кнопку «ОК», когда пользователи открывают Слайды Google, вы не хотите открывать это диалоговое окно.
  • Когда пользователи нажимают кнопку «Отмена», когда пользователи снова открывают Слайды Google, вы хотите открыть диалоговое окно.
  • Вы хотите использовать для этого настраиваемое диалоговое окно.

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

Проблема и обходные пути:

Чтобы открыть настраиваемое диалоговое окно, когда пользователи открывают Слайды Google, необходимо использовать устанавливаемый триггер , Но в Google Slides, к сожалению, на текущем этапе триггер события OnOpen нельзя использовать в качестве устанавливаемого триггера. Таким образом, когда пользователи открывают Google Slides, пользовательский диалог не может быть открыт. Похоже, что это текущая спецификация. Таким образом, чтобы достичь своей цели, необходимо подумать об обходном пути. В этом ответе я хотел бы предложить следующие 2 обходных пути.

Обходное решение 1:

К счастью, в Google Slides можно использовать простой триггер вместо устанавливаемого, который нельзя использовать , В этом случае триггер события OnOpen можно использовать как простой триггер. Таким образом, в этом обходном пути встроенный диалог используется с простым триггером.

Пример сценария:

Пожалуйста, скопируйте и вставьте следующий сценарий в сценарий привязанного к контейнеру Google Slides и сохрани это. Когда вы открываете Google Slides, открывается диалоговое окно. При нажатии «ОК» keyObject устанавливается на PropertiesService. При этом при повторном открытии Google Slides диалоговое окно не открывается. В этом случае используется getUserProperties(). Таким образом, keyObject может использоваться для каждого пользователя.

function onOpen() {
  var keyObject = {key1: "value1"};  // Here, key and value for checking whether user had clicked "ok" button.

  var prop = PropertiesService.getUserProperties();
  var value = prop.getProperty(Object.keys(keyObject)[0]);
  if (value != keyObject.key1) {
    var ui = SlidesApp.getUi();
    var result = ui.alert('sample title', 'Please check this link.\nhttps://###/', ui.ButtonSet.YES_NO);
    if (result == ui.Button.YES) {
      ui.alert('"ok" was clicked.');
      prop.setProperties(keyObject);
    } else {
      ui.alert('"cancel" was clicked.');
    }
  }
}
  • В этом случае URL нельзя щелкнуть. Таким образом, пользователь обязан получить доступ к URL. Я думаю, что это ограничение при использовании этого обходного пути.
  • Если вы хотите удалить keyObject. Пожалуйста, используйте следующий сценарий.

    function deleteProperty() {
      var keyObject = {key1: "value1"};
      var prop = PropertiesService.getUserProperties();
      prop.deleteProperty(Object.keys(keyObject)[0]);
    }
    

Обходной путь 2:

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

Пример сценария:

Пожалуйста, скопируйте и вставьте следующий сценарий в связанный с контейнером сценарий Google Slides и сохраните его. Когда вы открываете Google Slides, открывается диалоговое окно. Диалог показывает «Пожалуйста, откройте диалог из меню». Пользователи нажимают кнопку «ОК» и открывают пользовательское диалоговое окно из пользовательского меню. Когда в пользовательском диалоговом окне нажимается «ОК», keyObject устанавливается на PropertiesService. При этом при повторном открытии Google Slides диалоговое окно не открывается. В этом случае используется getUserProperties(). Таким образом, keyObject может использоваться для каждого пользователя.

function onOpen() {
  var keyObject = {key1: "value1"};
  var prop = PropertiesService.getUserProperties();
  var value = prop.getProperty(Object.keys(keyObject)[0]);
  if (value != keyObject.key1) {
    var ui = SlidesApp.getUi();
    ui.createMenu('Open dialog').addItem('Open dialog', 'openDialog').addToUi();
    var result = ui.alert('sample title', 'Please open dialog from the menu.', ui.ButtonSet.OK);
  }
}

function openDialog() {
  var ui = SlidesApp.getUi();
  var html = '<a href="https://###/" target="_blank">link</a><input type="button" value="ok" onClick="ok()"><input type="button" value="cancel" onClick="cancel()"><script>function ok() {google.script.run.withSuccessHandler(()=>google.script.host.close()).setProp()}function cancel() {google.script.host.close()}</script>';
  ui.showModalDialog(HtmlService.createHtmlOutput(html), "sample");
}

function setProp() {
  var keyObject = {key1: "value1"};
  var prop = PropertiesService.getUserProperties();
  prop.setProperties(keyObject);
}
  • В этом случае можно щелкнуть URL-адрес. Но для того, чтобы открыть пользовательский диалог, необходимо открыть его из пользовательского меню. Я думаю, что это ограничение при использовании этого обходного пути.

Примечание:

  • Выше скрипты - простые скрипты для тестирования обходного пути. Поэтому, пожалуйста, измените их для вашей реальной ситуации.

Ссылки:

Если я неправильно понял ваш вопрос, и вы не указали хочу, извиняюсь.

...