我正在尝试创建一个模型付款弹出窗口,用户可以在其中在 Google Apps 脚本中升级他们的计划。在我的 .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();”并看到我收到了电子邮件。
最佳答案
问题在于您的代码,其中使用的是 paypal
,
您正在动态添加 script
,我假设您将从该脚本获取 paypal
作为全局对象。
您忘记的是,在执行 paypal.Buttons
代码时,paypal
在浏览器中不可用。因为,它仍然可能从您刚刚包含的脚本中获取和评估代码。您必须监听脚本 onload 事件并在此之后调用您所需的函数。
<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>
关于javascript - 使用模板变量作为脚本 src 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60917606/