Я хочу отображать кнопки PayPal на моем Google Sheet в диалоговом окне. Проблема в том, что диалоговое окно занимает много времени (от 3 до 4 секунд) для отображения после того, как пользователь инициирует действие. Я думаю, что проблема возникает из-за того, что я импортирую JS с использованием CDN и тега сценария следующим образом:
<script src="https://www.paypal.com/sdk/js?client-id=SB_CLIENT_ID" />
Итак, после того, как пользователь нажимает на триггер дисплея, ему приходится ждать весь CDN, чтобы загрузить пакет, прежде чем он сможет отобразить диалоговое окно. Есть ли способ улучшить время отклика? Возможно, храня SDK в локальном файле? Или загрузите его и сохраните JS в каком-либо предварительном кэше, который загружается при открытии электронной таблицы и может использоваться повторно при каждом использовании триггера? Потому что, таким образом, создается впечатление, что CDN загружается на каждом дисплее, а производительность значительно.
Как бы я это сделал sh это?
Code.gs
// Display a modal dialog box with custom HtmlService content.
var htmlOutput = HtmlService.createHtmlOutputFromFile(FILENAME)
SpreadsheetApp.getUi().showModalDialog(htmlOutput, TITLE);
index. html
<!DOCTYPE html>
<!-- source: https://developer.paypal.com/docs/checkout/integrate/ -->
<head>
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Ensures optimal rendering on mobile devices. -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- Optimal Internet Explorer compatibility -->
</head>
<body>
<script
src="https://www.paypal.com/sdk/js?client-id=SB_CLIENT_ID"> // Required. Replace SB_CLIENT_ID with your sandbox client ID.
</script>
<div id="paypal-button-container"></div>
<script>
paypal.Buttons().render('#paypal-button-container');
// This function displays Smart Payment Buttons on your web page.
</script>
</body>