You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Google Apps Script函数返回null的问题?

问题解决:Google Apps Script函数调用返回null的问题

我是编程新手,英文水平不佳,若表述有误请见谅。我编写了如下代码,直接用Logger.log测试SearchAttributebyName函数时运行正常,但通过trythebot函数调用该函数时,始终返回null,恳请帮忙解决。

原代码:

function SearchAttributebyName(ID){  
  var SheetDatabase = SpreadsheetApp.openById("SS ID");  
  var Sheet = SheetDatabase.getSheetByName("Sheet1");  
  var Cell = Sheet.getRange("A3:A");  
  var Value = Cell.getValues().map(x => x[0]);  
  Logger.log(Value.length);  
  Value.forEach((elements, i) => {  
    if (elements == ID) {  
      let baris = i + 3;  
      let name = Sheet.getRange(baris,1,1,1).getValues();  
      let A= Sheet.getRange(baris,15,1,1).getValues();  
      let B= Sheet.getRange(baris,16,1,1).getValues();  
      let C= Sheet.getRange(baris,17,1,1).getValues();  
      let D= Sheet.getRange(baris,4,1,1).getValues();  
      let E= Sheet.getRange(baris,21,1,1).getValues();  
      let F= Sheet.getRange(baris,22,1,1).getValues();  
      let G= Sheet.getRange(baris,11,1,1).getValues();  
      let H= Sheet.getRange(baris,12,1,1).getValues();  
      let I= Sheet.getRange(baris,7,1,1).getValues();  
      let J= Sheet.getRange(baris,8,1,1).getValues();  
      let K= Sheet.getRange(baris,9,1,1).getValues();  
      let L= Sheet.getRange(baris,27,1,1).getValues();  
      let M= Sheet.getRange(baris,5,1,1).getValues();  
            
      return "✅ DATA OF " + name + ": " + "\n" + "\n" +  
             "DataA : " + A+ "\n" +  
             "DataB : " + B + "\n" +  
             "DataC : " + C + "\n" +  
             "DataD : " + D + "\n" +  
             "DataE : " + E + "\n" +  
             "DataF : " + F + "\n" +  
             "DataG : " + G + "\n" +  
             "DataH : " + H + "\n" +  
             "DataI: " + I + "\n" +  
             "DataJ : " + J + "\n" +  
             "DataK : " + K + "\n" +  
             "DataL : " + L + "\n" +  
             "DataM : " + M;  
    }  
    return "DATA NOT FOUND";  
  });
}
function trythebot() {  
  Logger.log(SearchAttributebyODPName("XXXXXXX"));
}

修复步骤及原因

  1. 修正函数名拼写错误:trythebot中调用的SearchAttributebyODPName是不存在的函数,实际定义的函数是SearchAttributebyName,名字不匹配导致调用失败返回null。
  2. 替换forEach为可返回结果的遍历方式:forEach仅用于遍历数组,不会将内部return的值传递给外部函数,因此原SearchAttributebyName函数没有明确返回值,默认返回null。改用普通for循环找到匹配项后直接返回结果。
  3. 优化单元格读取性能:多次调用getRange().getValues()会频繁请求Spreadsheet服务,降低执行效率。改为一次性获取所有行数据,再按需提取对应列的值。

修复后的代码

function SearchAttributebyName(ID){  
  var SheetDatabase = SpreadsheetApp.openById("SS ID");  
  var Sheet = SheetDatabase.getSheetByName("Sheet1");  
  // 获取A3到最后一行的所有数据,避免读取空行
  var dataRange = Sheet.getRange(3, 1, Sheet.getLastRow() - 2, Sheet.getLastColumn());  
  var allData = dataRange.getValues();  

  // 遍历查找匹配的ID
  for (let i = 0; i < allData.length; i++) {  
    const row = allData[i];  
    if (row[0] == ID) {  
      // 提取对应列的数据(数组索引从0开始,列号需减1)
      const name = row[0];  
      const A = row[14]; // 第15列
      const B = row[15]; // 第16列
      const C = row[16]; // 第17列
      const D = row[3];  // 第4列
      const E = row[20]; // 第21列
      const F = row[21]; // 第22列
      const G = row[10]; // 第11列
      const H = row[11]; // 第12列
      const I = row[6];  // 第7列
      const J = row[7];  // 第8列
      const K = row[8];  // 第9列
      const L = row[26]; // 第27列
      const M = row[4];  // 第5列
            
      return "✅ DATA OF " + name + ": " + "\n\n" +  
             "DataA : " + A + "\n" +  
             "DataB : " + B + "\n" +  
             "DataC : " + C + "\n" +  
             "DataD : " + D + "\n" +  
             "DataE : " + E + "\n" +  
             "DataF : " + F + "\n" +  
             "DataG : " + G + "\n" +  
             "DataH : " + H + "\n" +  
             "DataI: " + I + "\n" +  
             "DataJ : " + J + "\n" +  
             "DataK : " + K + "\n" +  
             "DataL : " + L + "\n" +  
             "DataM : " + M;  
    }  
  }
  // 未找到匹配项时返回提示
  return "DATA NOT FOUND";
}

function trythebot() {  
  // 修正函数名,调用正确的函数
  Logger.log(SearchAttributebyName("XXXXXXX"));
}

内容的提问来源于stack exchange,提问作者Angely Fransiska

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:30:43