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

返回数组的异步谷歌表读取函数调用后得到不可迭代对象问题

错误原因

  1. 异步函数getData()的返回值是Promise实例,你直接将调用结果赋值给data变量,此时data存储的是Promise对象本身,不是异步执行完成后返回的数组。你在then回调中没有接收Promise返回的结果,直接对Promise对象调用forEach数组方法,自然会报不可迭代的错误。
  2. 其余附加错误:
  • then回调没有定义参数接收异步返回的数组结果
  • forEach方法无返回值,你将它的执行结果赋值给present_list只会得到undefined,同时你调用了JS数组不存在的append方法,数组添加元素应该用push
  • 代码存在语法错误:console.log(Array.isArray(data);缺少右闭合括号

修正代码

import dotenv from "dotenv";
import { google } from "googleapis";
import { mainModule } from "process";

dotenv.config();

const spreadsheetID = process.env.spreadsheetID;

if (process.env.NODE_ENV == "production") {
  var fs = require("fs");
  fs.writeFile("./secrets.json", process.env.SECRET, (err: any) => {
    if (err) console.error('写入密钥文件失败', err);
  });
}

async function getData() {
  const auth = new google.auth.GoogleAuth({
    keyFile: "secrets.json",
    scopes: "https://www.googleapis.com/auth/spreadsheets",
  });
  const client = await auth.getClient();
  const googleSheets = google.sheets({ version: "v4", auth: client });
  const getRows = await googleSheets.spreadsheets.values.get({
    auth: auth,
    spreadsheetId: spreadsheetID,
    range: "Sheet1",
  });
  console.log(getRows.data.values);
  console.log(Array.isArray(getRows.data.values))
  return getRows.data.values;
}

// 用then接收异步返回的数组
getData().then(data => {
  console.log(Array.isArray(data));
  console.log(data);
  // 筛选符合条件的元素直接用filter方法更简洁
  const present_list = data.filter((user: any) => user[4] === "P");
  console.log(present_list);
});

console.log("asdasd");

如果你偏好forEach写法,可以替换筛选部分的代码:

const present_list = [];
data.forEach((user: any) => {
  if (user[4] === "P") {
    present_list.push(user);
  }
});

如果你的Node版本支持顶层await,也可以用更直观的写法:

const data = await getData();
const present_list = data.filter((user: any) => user[4] === "P");
console.log(present_list);

内容的提问来源于stack exchange,提问作者Chuah Zi Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:05