我正在制作一个侧边栏菜单,到目前为止,我让它能够从工作表中加载值。我正在努力让侧边栏更新所选择的值,目前挣扎一点,因为我似乎无法捕捉到一个错误,挣扎了一点,弄清楚如何在应用程序脚本中错误处理应用程序脚本和HTML。所以这里的第一个问题是,有人能给我一个关于如何错误处理HTML和应用程序脚本问题的参考。
我的第二个问题是我目前的问题,我有一个HTML按钮,它正在调用onFormUpdate()
函数,它位于一个单独的HTML文件内,只是为了处理javascript函数。这是我的index.html
<!DOCTYPE html>
<html>
<base target="_top">
<?!= include('sidebar/sidebarcss'); ?>
<body>
<div id="title">
<div><h2>Meeting Item</h2></div>
</div>
<div id="meet">
<form id="meetform">
Row ID: <br>
<input type="text" id="meetrowId" name="meetrowId" maxlength="4" size="4" readonly />
Meet ID: <br>
<input type="text" id="meetId" name="meetId" maxlength="8" size="10" readonly />
Enter Date: <br>
<input type="text" id="meetingDate" name="meetingDate"/>
Topic: <br>
<input type="text" id="meetTopic" name="meetTopic"/>
Agenda: <br>
<textarea name="meetAgenda" id="meetAgenda" rows="10" cols="30"></textarea>
Comment History:<br>
<textarea name="meetComments" id="meetComments" rows="10" cols="30" readonly ></textarea>
Add Comments:<br>
<textarea name="meetComUpdate" id="meetComUpdate" rows="10" cols="30"></textarea><br>
<input type="button" class="button" value="Update Record" onclick="onFormUpdate()"/>
</form>
</div>
<input type="button" class="button" value="Select Another ID" onclick="google.script.run.showEmailSidebar()"/>
<input type="button" class="button" value="Close" onclick="google.script.host.close()"/>
<?!= include('sidebar/script'); ?>
<script>
google.script.run.withSuccessHandler(onSuccess).SidebarActiveRow();
</script>
</body>
</html>
在表单中,我调用我的onFormUpdate(),当我点击按钮时什么也没有发生。正如你所看到的,我包括'侧边栏/脚本',这是我的html文件,存储所有的javascript函数。OnFormUpdate()位于"侧边栏/脚本"中,如下所示:
<script>
function onSuccess([cellrow, meetid, meetdate, meettopic, meetagenda, meetcomments])
{
/*
Secondary method for string parsing
const table =sidebarVar.split(",") //["key:value","key:value"]
.map(pair => pair.split(":")); //[["key","value"],["key","value"]]
const result = Object.fromEntries(table);
result.meetid;
*/
document.getElementById('meetrowId').value = cellrow
document.getElementById('meetId').value = meetid
document.getElementById('meetingDate').value = meetdate
document.getElementById('meetTopic').value = meettopic
document.getElementById('meetAgenda').value = meetagenda;
document.getElementById('meetComments').value = meetcomments;
}
function onFormUpdate()
{
var recordform =
{
row: document.getElementById('meetrowId').value,
topic: document.getElementById('meetTopic').value,
agenda: document.getElementById('meetAgenda').value,
newcomment: document.getElementById('meetComUpdate').value
};
google.script.run.withSuccessHandler(SidebarActiveRow).recordUpdate(recordform);
}
</script>
正如你所看到的,我正试图让应用程序处理程序调用SidebarActiveRow
,这是利用我的onSuccess
函数从表中加载数据元素;这很好。处理程序在我成功运行位于我的代码中的recordUpdate()
后调用SidebarActiveRow
运行。gs文件。到目前为止,什么都没有发生。我有这个当前的代码测试,看看是否功能工作,但没有成功。
function recordUpdate(recordform) {
SpreadsheetApp.getUi().alert(recordform.row);
}
我没有得到提示,我似乎无法排除故障,因为html和Apps脚本功能并没有真正显示错误。我确实去看了一下是否有任何错误,但目前我没有看到任何错误。所以我在这里寻求一些帮助。
查看javascript错误处理。
HTML:
<script>
function someFunction() {
try {
// ... do some code
}
catch(err) {
alert(err);
}
}
</script>
For App Script
function someFunction() {
try {
// ... do some code
}
catch(err) {
Logger.log(err); // check execution log
}
}