Как я могу вызвать функцию в файле JS с помощью кнопки добавления Gmail? - PullRequest
0 голосов
/ 28 мая 2019

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

Как я могу это сделать?Пожалуйста, смотрите пример кода

В соответствии с примером кода myLib.js имеет функцию myFunc () , которая принимает идентификатор компонента и URL для открытия.Поэтому я создал кнопку и привязал к ней myFunc .Как я могу сделать то же самое, используя googlescript для gmail addon .

Заранее спасибо

   <head>
      <script src="https://*/app.bundle.js"> </script>
      <script src="https://*/app.bundle.css"> </script>
      <script src="https://*/myLib.js"> </script>
   </head>
   <body>
     <button id="app">Clickhere</button>
     <script>
        myFunc('#app',URL);
     </script>
   </body>

1 Ответ

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

Надстройки Gmail (если речь идет о надстройке Gmail) используют Карточный интерфейс и не могут быть созданы с помощью пользовательских html и 'css'. После создания такого интерфейса создайте функцию, которая выполняет функцию вашей библиотеки:

/**
 * Triggers library function;
 * @param {Object} e event object;
 */
function myTrigger(e) {
  //access event object's params;
  var parameters = e.parameters; 
  var id  = parameters.id;
  var url = parameters.url;      

  //you can reference lib functions by prepending its name;
  myLibrary.myFunc();
}

Импортируйте свою библиотеку, нажав на кнопку командной строки проекта Ресурсы , затем выберите Библиотеки и импортируйте свой проект (если ваша библиотека может быть преобразована в проект сценария приложений, если нет). Мало что можно сделать). Кроме того, Google не рекомендует использовать библиотеки в дополнениях.

Конечно, вы можете загрузить внешнюю не-GAS библиотеку через UrlFetchApp.fetch(), используя eval() (у ctrq есть отличный учебник о том, как это сделать), но вы, вероятно, знаете, что eval() приносит угроз безопасности для вашего приложения.

Затем настройте Action на целевом элементе пользовательского интерфейса (скорее всего, TextButton):

//...created a TextButton and wrote it into a var tb;

//create parameters object (aquire id and url however you want)
var parameters = {
 id  : '', 
 url : '' 
};

//reference Enum loadIndicator (only NONE or SPINNER currently);
var loadIndicator = CardService.LoadIndicator.SPINNER;

//create Action to set;
var action = CardService.newAction();
    action.setFunctionName('myTrigger'); //reference trigger function;
    action.setLoadIndicator(loadIndicator); //set a load indicator, if not invoked equals NONE;
    action.setParameters(parameters) //every key in this object are strings!;

//set Action to TextButton;
tb.setOnClickAction(action); 
...