我试图实现的目标是基于表单无线电选择检索单元格值并更新文本区域。基于无线电选择返回单元格值
过程:用户打开对话框。他们选择一个现场办公室。 Onclick运行功能检查。检查后运行google.script.run.withSuccessHandler(addSignatureLine).getSignatureLine(cellElement);应该运行并使用Id'AdditionalMessage'来更新textarea,并使用从.getSignatureLine中检索的签名行。
这里是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添加到脚本并获取未捕获的SyntaxError:意外的标识符和未捕获的ReferenceError:检查未定义 –
@SandyGood我创建了函数updateSignatureLine,从html中的onclick中删除了检查并得到错误Uncaught ReferenceError: updateSignatureLine未定义。我猜这是代码失败的地方。 –