我正在使用 GAS HTMLService 来设计一个 Web 应用程序,并且遇到了一个我似乎无法克服的主要障碍——所以我希望能得到你们的帮助。
我可以使用标准 doGet 创建模板并正确显示 HTML:
function doGet(e){
var ss = SpreadsheetApp.openById('SpreadSheetKey');
var usersheet = ss.getSheetByName('UserInfo');
var lastRow = usersheet.getLastRow();
var Userrange = usersheet.getRange(2, 1, lastRow-1, 4);
var Uservalues = Userrange.getValues();
var length = Uservalues.length;
var template = HtmlService.createTemplateFromFile('Form.html');
template.stuff = {};
template.stuff = Uservalues;
template.action = ScriptApp.getService().getUrl();
return template.evaluate();
}
只要我从我的 HTML 文件中删除这段代码,HTML 就会很好地呈现:
$('#chkP').click(function(){
var email = '<?=email?>';
var usename = $('#myuserName').val();
for(var i=0;i<num;i++){
var name = '<?!=stuff[i][0]?>';
alert(name);
}
});
该问题似乎与尝试使用“i”变量有关——我可以使用以下方法获取正确的信息:
'<?=stuff[2][0]?>' // THIS WORKS
<?=stuff[i][0]?> //THIS DOES NOT -- IT IS ALWAYS undefined
// it's like 'i' and <?stuff?> aren't in the same scope??
所以我的理论是我有一个 ServerSide 数组:
(Spreadsheetapp.blahblah.getValues();)
客户端无法使用。
我对你们的问题是我如何从电子表格中获取这些数据到 HTML 表单中,并可以使用简单的“for”循环作为数组进行迭代......
或者,还有更好的方法?