执行函数返回function () { [native code],Simpan函数无法获取表格输入求助
问题修复方案
核心问题分析
- 语法错误导致返回原生函数引用
你的代码中jumlahitem和tgl的获取语句漏掉了getValue()的调用括号:
var jumlahitem = shtinput.getRange('D7').getValue; // 错误:未调用方法 var tgl = shtinput.getRange('D9').getValue; // 错误:未调用方法
这里的getValue是一个方法,不加括号的话,你拿到的是方法本身的引用而非单元格的值,这就是执行后返回function () { [native code] }的原因。
- 自定义函数权限限制导致无法写入数据
在Google Sheets单元格中直接输入=Simpan()调用自定义函数时,这类函数处于沙箱模式,没有权限修改其他工作表(如Database)的内容,只能返回值到当前单元格,这是数据无法写入的关键原因。
修复后的代码
function Simpan() { var Sheet = SpreadsheetApp.getActiveSpreadsheet(); var shtinput = Sheet.getSheetByName('Input Form'); var shtdb = Sheet.getSheetByName('Database'); // 修正:补全getValue()的调用括号 var nomorinput = shtinput.getRange('D3').getValue(); var namaitem = shtinput.getRange('D5').getValue(); var jumlahitem = shtinput.getRange('D7').getValue(); var tgl = shtinput.getRange('D9').getValue(); var baris = shtdb.getRange('E1').getValue(); baris += 1; var rangeisi = shtdb.getRange('A' + baris + ':D'+ baris); rangeisi.setValues([[nomorinput,namaitem,jumlahitem,tgl]]); // 可选:更新E1的计数,确保下次写入正确的行号 shtdb.getRange('E1').setValue(baris); }
正确运行方式
不能直接在单元格中调用=Simpan(),请选择以下任意一种方式运行:
- 添加按钮触发:在工作表中插入形状/绘图,右键点击形状选择「分配脚本」,输入
Simpan,点击按钮即可执行。 - 手动在脚本编辑器运行:打开脚本编辑器,点击运行按钮执行
Simpan函数(首次运行需授权)。 - 设置触发器:在脚本编辑器中点击「编辑」→「当前项目的触发器」,添加一个手动触发或事件触发的规则,实现自动执行。
内容的提问来源于stack exchange,提问作者Vovlo Vandver
相关产品推荐
相关产品推荐

