You need to enable JavaScript to run this app. Google Sheets按钮绑定脚本提示Script Function Could not be found问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets按钮绑定脚本提示Script Function Could not be found问题咨询

问题原因

  • 你写的所有业务函数(ClearCell/SubmitData/Search/UpdateData/Delete)全部被嵌套在顶层的myFunction函数内部,属于局部作用域函数。Google Sheets的按钮绑定功能只能识别全局作用域下的顶层函数,自然无法找到这些嵌套的函数,这是报错的核心原因。
  • 代码中还存在两处语法错误,会导致后续运行失败:
    1. Delete函数中spreadsheetApp.get.Ui()拼写错误,正确写法为SpreadsheetApp.getUi()
    2. Delete函数中ui.ButtonSet.Yes_No枚举值错误,正确写法为ui.ButtonSet.YES_NO

修复后的完整代码

// 清空表单
function ClearCell() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formS     = ss.getSheetByName("Entry Form"); // 表单页

  var rangesToClear = ["b7","d7","f7","h7","b9","d9","f9","h9","b12"];
  for (var i=0; i<rangesToClear.length; i++) {
    formS.getRange(rangesToClear[i]).clearContent();
  }
}
//-----------------------------------------------------------------------------------
// 提交数据
function SubmitData() {
  var ss      = SpreadsheetApp.getActiveSpreadsheet();
  var formS   = ss.getSheetByName("Entry Form"); // 表单页
  var dataS   = ss.getSheetByName("Traffic Discrepancy Log"); // 数据存储页
  
  
  var values = [[formS.getRange("b7").getValue(),
                 formS.getRange("d7").getValue(),
                 formS.getRange("f7").getValue(),
                 formS.getRange("h7").getValue(),
                 formS.getRange("b9").getValue(),
                 formS.getRange("d9").getValue(),
                 formS.getRange("f9").getValue(),
                 formS.getRange("h9").getValue(),
                 formS.getRange("b12").getValue()]];
  dataS.getRange(dataS.getLastRow()+1,1,1,9).setValues(values);
  ClearCell();
}
//---------------------------------------------------------------------------------
// 搜索记录
var SEARCH_COL_IDX = 0;
function Search(){
  var ss      = SpreadsheetApp.getActiveSpreadsheet();
  var formS   = ss.getSheetByName("Entry Form"); // 表单页  

  var str     = formS.getRange("B4").getValue();
  var values = ss.getSheetByName("Traffic Discrepancy Log").getDataRange().getValues();
  for (var i=0; i<values.length;i++){
    var row = values[i];
    if (row[SEARCH_COL_IDX] == str){
      
      formS.getRange("b7").setValue(row[0]),
      formS.getRange("d7").setValue(row[1]),
      formS.getRange("f7").setValue(row[2]),
      formS.getRange("h7").setValue(row[3]),
      formS.getRange("b9").setValue(row[4]),
      formS.getRange("d9").setValue(row[5]),
      formS.getRange("f9").setValue(row[6]),
      formS.getRange("h9").setValue(row[7]),
      formS.getRange("b12").setValue(row[8]);  
      
    } 
  }
}
//------------------------------------------------------------------------------------
// 更新数据
function UpdateData(){
  var ss      = SpreadsheetApp.getActiveSpreadsheet();
  var formS   = ss.getSheetByName("Entry Form"); // 表单页
  var dataS   = ss.getSheetByName("Traffic Discrepancy Log"); // 数据存储页   
  
  var str    = formS.getRange("B4").getValue();
  var values = ss.getSheetByName("Traffic Discrepancy Log").getDataRange().getValues();    
  for (var i=0; i<values.length; i++){
    var row = values[i];
    if (row[SEARCH_COL_IDX] == str){
      var  INT_R = i+1
      
      var values1 = [[formS.getRange("b7").getValue(),
                     formS.getRange("d7").getValue(),
                     formS.getRange("f7").getValue(),
                     formS.getRange("h7").getValue(),
                     formS.getRange("b9").getValue(),
                     formS.getRange("d9").getValue(),
                     formS.getRange("f9").getValue(),
                     formS.getRange("h9").getValue(),
                     formS.getRange("b12").getValue()]];
      dataS.getRange(INT_R,1,1,9).setValues(values1);
      SpreadsheetApp.getUi().alert('数据已更新');
      ClearCell();  
    } 
  } 
}
//------------------------------------------------------------------------------------
// 删除数据
function Delete() {
  var ss      = SpreadsheetApp.getActiveSpreadsheet();
  var formS   = ss.getSheetByName("Entry Form"); // 表单页
  var dataS   = ss.getSheetByName("Traffic Discrepancy Log"); // 数据存储页  

  var ui = SpreadsheetApp.getUi();
  var response = ui.alert('确认删除?',ui.ButtonSet.YES_NO);

  // 处理用户确认操作
  if (response == ui.Button.YES) {
    
    var str = formS.getRange("B4").getValue();
    var values = ss.getSheetByName("Traffic Discrepancy Log").getDataRange().getValues();
    for (var i = 0; i <values.length; i++) {
      var row = values[i];
      if (row[SEARCH_COL_IDX] == str) {
        var INT_R = i+1
        
        dataS.deleteRow(INT_R) ;
        ClearCell();
      }
    }
  } 
}

后续操作步骤

  • 替换原有代码后保存Apps Script项目
  • 给对应按钮分配脚本时,直接填写对应函数名即可,不需要加括号,比如清除按钮填ClearCell、提交按钮填SubmitData
  • 首次点击按钮时按提示完成脚本授权即可正常使用

内容的提问来源于stack exchange,提问作者Gerry P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:15:05