【发布时间】:2016-06-18 12:40:54
【问题描述】:
我试图实现的目标是根据表单单选选择检索单元格值并更新文本区域。
进程:用户打开对话框。他们选择了一个外地办事处。 Onclick 运行功能检查。检查运行后 google.script.run.withSuccessHandler(addSignatureLine).getSignatureLine(cellElement);应该使用从 .getSignatureLine 检索到的签名行来运行和更新带有 Id 'AdditionalMessage' 的 textarea。
下面是html代码的两个功能:
<script>
function addSignatureLine(signatureLine){
document.getElementById('AdditionalMessage').value = '\n\n'signatureLine;
};
function updateSignatureLine() {
var cellElement = document.getElementById('ET');
console.log('cellElement: ' + cellElement);
google.script.run.withSuccessHandler(addSignatureLine)
.getSignatureLine(cellElement);
};
function check() {
var ele = document.getElementsByName('fieldOfficeET');
var flag = 0;
for (var i = 0; i < ele.length; i++) {
if (ele[i].checked)
flag = 1;
}
if (flag == 1)
document.getElementById('Submit').disabled = false;
};
</script>
这里是 getSignatureLine.gs 脚本
function getSignatureLine(cellObject) {
var ss = SpreadsheetApp.openById('googleSheetId');
var sheet = ss.getSheetByName('AMS Contact Information');
var firstRow = 2;
var lastRow = 10;
var dataRange = sheet.getRange(firstRow, 1, lastRow, 11);
var dataValues = dataRange.getValues();
for (var key in cellObject) { //Loop through all the data in the form
Logger.log('key: ' + key);
Logger.log('value: ' + cellObject[key]);
}
//Determines the row the Field Office is in
for (var rr = 0; rr < dataValues.length; rr++) {
if (dataValues[rr][0] == cellObject.fieldOfficeET) {
var r = rr + 2
break;
}
}
var signatureLine = sheet.getRange(r, 11).getValue();
Logger.log("signatureLine: " + signatureLine)
return signatureLine;
}
【问题讨论】:
-
代码哪里出错了?我们无法为您调试代码。任何人都无法知道正在检索和传递的值是什么。我看到你有 Logger.log 语句,所以你得到了意想不到的值吗?
cellElement在传递到服务器之前是否正确?使用console.log('cellElement: ' + cellElement);语句将值打印到浏览器控制台。 -
我将 console.log 添加到脚本并得到 Uncaught SyntaxError: Unexpected identifier and Uncaught ReferenceError: check is not defined
-
@SandyGood 我创建了函数 updateSignatureLine,从 html 中的 onclick 中删除了检查并得到错误 Uncaught ReferenceError: updateSignatureLine is not defined。我猜这是代码失败的地方。
-
好的。您的 HTML 中有错误。它是“未捕获”。这只是意味着代码编辑器没有捕捉到它,但是当浏览器试图显示 HTML 时,它发现了一个错误。搜索“检查”。找到“检查”,寻找可能的错误。如果需要,请注释掉代码,并通过消除过程。
-
我在您提供的代码中没有看到
updateSignatureLine。
标签: javascript html google-apps-script google-sheets