Как передать шаблонные переменные в функции обработчика на стороне сервера в файлах HTML с помощью Google Apps Script? - PullRequest
0 голосов
/ 05 февраля 2020

Последуйте за этим ответом. { ссылка }

Я хочу передать объектную переменную-шаблон в функцию на стороне сервера в GAS. Я ожидаю увидеть кнопки рендеринга, а затем после заполнения реквизитов платежа и нажатия кнопки оплаты, я ожидаю увидеть, что функция handleTxn() успешно выполняется с использованием объекта content в качестве одного из аргументов.

Но вместо этого ничего не происходит, потому что кнопки даже не отображаются. Он молча завершается сбоем.

var content = <?!= content ?>;
google.script.run.handleTxn(data, details, content);

Как мне теперь получить доступ к объекту content, чтобы передать его функции сервера?

Code.gs
[...]
var template = HtmlService.createTemplateFromFile(HTML_FILENAME);
template.content = values;
var htmlOutput = template.evaluate();
[...]

function handleTxn(data, details, content) {
  // do stuff
}
index. html
<!DOCTYPE html>
  <!-- source: https://developer.paypal.com/docs/checkout/integrate/ -->
  <html>
    <body>
      <div class="container">
        Price: $<?= content.price ?></td>
        <div id="paypal-button-container"></div>
      </div>
      <script
        src="https://www.paypal.com/sdk/js?client-id=SB_CLIENT_ID">
      </script> 
      <script>
        // This function displays Smart Payment Buttons on your web page.
        paypal.Buttons({
          createOrder: function(data, actions) {
            // This function sets up the details of the transaction, including the amount and line item details.
            return actions.order.create({
              purchase_units: [{
                amount: {
                  value: <?!= content.price ?>
                }
              }]
            });
          },
          onApprove: function(data, actions) {
            // This function captures the funds from the transaction.
            return actions.order.capture().then(function(details) {
              var alertText = (
                '\nWe charged you: $'
                +
                <?!= content.price ?>
              );
              alert( alertText );
              var content = <?!= content ?>;
              google.script.run.handleTxn(data, details, content);
            });
          }
        }).render('#paypal-button-container');
      </script>
    </body>
  </html>
...