Javascript 未在 Google 应用脚本中运行
2014-05-23
59
我在尝试在 Google 应用脚本中运行以下代码时遇到问题。
// 1.foldername = Folder name | 3.templateId = ID of the template to use
// 2.SheetId = ID of spreadsheet to use. | 4.rootFolder = ID of the root folder to save everything to
function createTemplate(){
var folderName = $("#fileName").text(); //Get text from fileName textbox
var rootId = $("#rootId").val(); //Get value of selected item in rootId element
var sheetId = $("#fileId").val(); //Get value of selected item in fileId element
var templateId = $("#templateId").val(); //Get value of selected item in templateId element
//google.script.run.template(folderName, sheetId, templateId, rootId); //Execute template function serverside
alert('done'); //Create alert to show that it is done |Remove after debugging|
}
当调用上述代码时,它不会执行。我已通过在上述块内的多个点创建日志进行了测试。行
var folderName = $("#fileName").text(); //Get text from fileName textbox
var rootId = $("#rootId").val(); //Get value of selected item in rootId element
var sheetId = $("#fileId").val(); //Get value of selected item in fileId element
var templateId = $("#templateId").val(); //Get value of selected item in templateId
以上的内容都将被执行。我还注释掉了这些行,这样代码就可以正常执行。因此,我认为错误出在这些行中,但我不确定错误是什么。
这是我的 HTML 代码,希望对您有所帮助。
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>Report builder</title>
<?!= bootstrap.css ?>
<?!= include('site')?>
</head>
<body>
<div class="body">
<? var files = getAllFiles(); ?>
<? var templates = getAllTemplates(); ?>
<? var folders = getAllFolders(); ?>
<form class="form-horizontal">
<div class="control-group">
<div class="controls" style="margin:5px;">
<input id="fileName" type="text" placeholder="Folder name"/>
</div>
</div>
<div class="control-group">
<div class="controls" style="margin:5px;">
<select id="rootId" style="height:30px;">
<option value="Drive">Drive</option>
<? for (i in folders){ ?>
<option value="<?= folders[i].getId(); ?>"> <?= folders[i].getName(); ?> </option>
<? } ?>
</select>
</div>
</div>
<div class="control-group">
<div class="controls" style="margin:5px;">
<select id="fileId" style="height:30px;">
<? for (i in files){ ?>
<option value="<?= files[i].getId(); ?>"> <?= files[i].getName(); ?> </option>
<? } ?>
</select>
</div>
</div>
<div class="control-group">
<div class="controls" style="margin:5px;">
<select id="templateId" style="height:30px;">
<? for (i in templates){ ?>
<option value="<?= templates[i].getId(); ?>"> <?= templates[i].getName(); ?> </option>
<? } ?>
</select>
</div>
</div>
<button class="btn btn-primary" type="button" onclick="createTemplate()">Create Report</button>
</form>
</div>
</body>
我的 JavaScript 函数位于 HTML 文件的底部。 提前致谢!
1个回答
这是因为您混合了服务器代码和客户端代码。请务必重新阅读 htmlService 文档。您无法从服务器访问 dom 或使用 jquery。所有这些 vslues 都必须作为参数从客户端 js 传递到 google.run 服务器调用中。
Zig Mandel
2014-05-23