在模板和服务器端脚本 (gs) 之间传递值
Passing values between templates and server side script( gs)
我有 - 3 个文件,
- sidebar.html(第 1 步)
- model_less_dialog.html(第 2 步)
- 服务器端脚本 (.gs)
我想做什么:
我想在服务器端脚本上发送 sidebar.html 和 model_less_dialog.html 的值。
我现有的解决方案与
一起工作正常
localStorage.setItem('selectedSidebarValues', selectedData);
在模板和服务器端之间传递信息。我想找到一个最佳实践来在模板和服务器端脚本之间传递值,而不是 localStorage()
。用户可以在将其发送到服务器端脚本 (.gs) 之前修改 localStorage()
这可能很危险
第 1 步 sidebar.html :
$("#selectBtn").on("click",function() {
-------------------
--- piece of code ---
-------------------
var selectedData = 'all selected values';
//storing step 1 selected data in local storage.
localStorage.setItem('selectedSidebarValues', selectedData);
//call the server script method to open the model less dialog box
google.script.run
.withSuccessHandler(
function(result, element) {
element.disabled = false;
})
.withFailureHandler(
function(msg, element) {
console.log(msg);
element.disabled = false;
})
.withUserObject(this)
.openModelLessDialogBox();
});
步骤 2 model_less_dialog.html:
$("#selectBtnModelLessDialogBox").on("click",function(){
//collecting step 1 selected data from local storage.
var selectStep1 = localStorage.getItem('selectedSidebarValues');
var selectStep2 = 'all selected values';
//call the server script method
google.script.run
.withSuccessHandler(
function(result, element) {
element.disabled = false;
})
.withFailureHandler(
function(msg, element) {
console.log(msg);
element.disabled = false;
})
.withUserObject(this)
.calculatePolicy(selectStep1, selectStep2);
});
服务器端脚本 (.gs) :
function openModelLessDialogBox() {
var ui = SlidesApp.getUi();
var htmlOutput = HtmlService
.createHtmlOutputFromFile('model_less_dialog')
.setWidth(250)
.setHeight(300);
ui.showModelessDialog(htmlOutput, 'model less dialog');
}
function calculatePolicy(selectStep1, selectStep2) {
----- ----- ---
----- ----- ---
----- ----- ---
}
这就是我将值传递给服务器的方式。
最简单的方法是在templates中传递数据:
侧边栏使用参数 selectedData
调用 modaldialog
.openModelLessDialogBox(selectedData);
模态对话框有一个模板:
var selectStep1 = <?= sidebarData?>
通过服务器将数据从侧边栏传递到模态对话框:
function openModelLessDialogBox(sidebarData) {
var ui = SlidesApp.getUi();
var htmlTemp = HtmlService.createTemplateFromFile('model_less_dialog');
htmlTemp["sidebarData"] = sidebarData;
var htmlOutput = htmlTemp.evaluate()
.setWidth(250)
.setHeight(300);
ui.showModelessDialog(htmlOutput, 'model less dialog');
}
另一种方式是通过window.top
直接沟通。参见 Related answer
我有 - 3 个文件,
- sidebar.html(第 1 步)
- model_less_dialog.html(第 2 步)
- 服务器端脚本 (.gs)
我想做什么: 我想在服务器端脚本上发送 sidebar.html 和 model_less_dialog.html 的值。
我现有的解决方案与
一起工作正常localStorage.setItem('selectedSidebarValues', selectedData);
在模板和服务器端之间传递信息。我想找到一个最佳实践来在模板和服务器端脚本之间传递值,而不是 localStorage()
。用户可以在将其发送到服务器端脚本 (.gs) 之前修改 localStorage()
这可能很危险
第 1 步 sidebar.html :
$("#selectBtn").on("click",function() {
-------------------
--- piece of code ---
-------------------
var selectedData = 'all selected values';
//storing step 1 selected data in local storage.
localStorage.setItem('selectedSidebarValues', selectedData);
//call the server script method to open the model less dialog box
google.script.run
.withSuccessHandler(
function(result, element) {
element.disabled = false;
})
.withFailureHandler(
function(msg, element) {
console.log(msg);
element.disabled = false;
})
.withUserObject(this)
.openModelLessDialogBox();
});
步骤 2 model_less_dialog.html:
$("#selectBtnModelLessDialogBox").on("click",function(){
//collecting step 1 selected data from local storage.
var selectStep1 = localStorage.getItem('selectedSidebarValues');
var selectStep2 = 'all selected values';
//call the server script method
google.script.run
.withSuccessHandler(
function(result, element) {
element.disabled = false;
})
.withFailureHandler(
function(msg, element) {
console.log(msg);
element.disabled = false;
})
.withUserObject(this)
.calculatePolicy(selectStep1, selectStep2);
});
服务器端脚本 (.gs) :
function openModelLessDialogBox() {
var ui = SlidesApp.getUi();
var htmlOutput = HtmlService
.createHtmlOutputFromFile('model_less_dialog')
.setWidth(250)
.setHeight(300);
ui.showModelessDialog(htmlOutput, 'model less dialog');
}
function calculatePolicy(selectStep1, selectStep2) {
----- ----- ---
----- ----- ---
----- ----- ---
}
这就是我将值传递给服务器的方式。
最简单的方法是在templates中传递数据:
侧边栏使用参数
调用 modaldialogselectedData
.openModelLessDialogBox(selectedData);
模态对话框有一个模板:
var selectStep1 = <?= sidebarData?>
通过服务器将数据从侧边栏传递到模态对话框:
function openModelLessDialogBox(sidebarData) { var ui = SlidesApp.getUi(); var htmlTemp = HtmlService.createTemplateFromFile('model_less_dialog'); htmlTemp["sidebarData"] = sidebarData; var htmlOutput = htmlTemp.evaluate() .setWidth(250) .setHeight(300); ui.showModelessDialog(htmlOutput, 'model less dialog'); }
另一种方式是通过window.top
直接沟通。参见 Related answer