Как передать параметры в Google Apps Script Гаджет, встроенный в страницу сайтов?

У меня есть гаджет Google Apps Script, встроенный в страницу Сайтов Google. Я хотел бы передать гаджету параметр страницы, чтобы при открытии страницы с URL-адресом вроде:

https://sites.google.com/a/mydomain/mysite/mypage?myparameter=1

Я могу получить доступ к значению параметра страницы в гаджете Apps Script так:

function doGet(e) {
  var app = UiApp.createApplication();
  app.add(app.loadComponent("MyComponent"));
  var myparam = e.parameter.myparameter;    
  return app;    
}

В настоящее время значение e.parameter.myparameter возвращается как null. Есть ли способ настроить мои приложения Script для поддержки этого? Любые подходы приветствуются.

Ответы

Ответ 2

В этом примере описывается параметр как "& name = value", однако я не смог заставить его работать в Google Apps Сайта или на личном сайте Google. (которые, похоже, обрабатывают аутентификацию по-разному)

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

Одна гипотеза заключается в том, что Google что-то изменил, я заметил, что структура меню, похоже, не соответствует тому, что, как я полагаю, используется, поскольку я вижу много ссылок на кнопку [share]/menu.

Ответ 3

Я разместил это на странице code.google.com, на которой есть ссылка в принятом ответе, но способ передачи параметров в Apps Script заключается в добавлении "https://sites.google.com/feeds" в область "Script Apps". (См. этот сайт для получения информации о том, как добавить явные области.) Как только эта область добавлена, работает следующее:

в Code.gs:

function doGet(e) {

  var htmlTemplate = HtmlService.createTemplateFromFile("page");
  htmlTemplate.urlParams = e.parameters;
  return htmlTemplate.evaluate();

}

в page.html:

...
<head>
...
<script>urlParams = <?!= JSON.stringify(urlParams) ?>;</script>
</head>
...

urlParams теперь доступен как переменная в вашем коде JS в следующей форме:

urlParams = { key1: [value1, value2, ...], key2: [value1, value2] }