Используйте переменную шаблона как часть скрипта src - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь создать всплывающее окно модели платежей, где пользователь может обновить свой план в скрипте приложений Google. В моем файле .gs есть:

function manageSubscription() {
  var title = 'subscribe';
  var html = HtmlService.createTemplateFromFile('subscribe');
  html.email = Session.getActiveUser().getEmail();
  var htmlOutput = html.evaluate();
  htmlOutput.setTitle(title).setWidth(200).setHeight(200)
  DocumentApp.getUi().showModalDialog(htmlOutput, title);
}

В моем файле .html я пытаюсь использовать этот адрес электронной почты, чтобы передать его PayPal при регистрации:

  <script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function(){
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    document.getElementById('paypal_js').src = src+<?= email ?>;

    paypal.Buttons({
      createSubscription: function(data, actions) {
        return actions.subscription.create({'plan_id': 'P-my-plan'});
      },
      onApprove: function(data, actions) {
        google.script.host.close();
      }
    }).render('#paypal-button-container');
  });
  </script>

Тем не менее, я получаю ReferenceError: paypal is not defined в консоли браузера. Как ни странно, я могу сделать простой 'alert ();' и вижу, что я получаю письмо.

1 Ответ

5 голосов
/ 29 марта 2020

Проблема в том, что ваш код использует paypal, вы динамически добавляете script, и я предполагаю, что вы получите paypal как глобальный объект из этого скрипта.

Что вы забыли, так это то, что во время выполнения кода paypal.Buttons, paypal недоступно в браузере. Так как он все еще, вероятно, выбирает и оценивает код из скрипта, вы только что включили. Вы должны прослушать событие загрузки сценария и после этого вызвать необходимые функции.

<script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function(){
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    var scriptTag = document.getElementById('paypal_js')
    scriptTag.src = src+<?= email ?>;

    scriptTag.onload = function() {
      paypal.Buttons({
        createSubscription: function(data, actions) {
          return actions.subscription.create({'plan_id': 'P-my-plan'});
        },
        onApprove: function(data, actions) {
          google.script.host.close();
        }
      }).render('#paypal-button-container');
    }
  });
  </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...