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

Google Apps Script中Discord邀请API响应的日期解析问题

问题原因与解决方案

核心原因

getInviteExpiration是async函数,这类函数的返回值会被自动包装成Promise对象,而非直接返回你在函数里定义的false或Date实例。测试函数里直接console.log(getInviteExpiration(...)),打印的是未完成状态的Promise对象,在Google Apps Script控制台中会显示为{}。

函数内部的console.log能正常输出日期,是因为函数内部的异步逻辑已经执行,但返回值被Promise包装后,测试函数没有等待Promise完成就直接打印了这个包装对象。

修复方案

有两种方式解决这个问题:

方式1:将测试函数改为async函数,用await调用目标函数

async function test() {
  const permanentUrl = "https://discord.gg/minecraft";
  const permanentResult = await getInviteExpiration(permanentUrl);
  console.log(permanentResult); // 输出false
  
  const tempUrl = "https://discord.gg/DdMJXskh";
  const tempResult = await getInviteExpiration(tempUrl);
  console.log(tempResult); // 输出Date实例
}

方式2:用Promise的.then()方法处理返回结果

function test() {
  const permanentUrl = "https://discord.gg/minecraft";
  getInviteExpiration(permanentUrl)
    .then(result => console.log(result)) // 输出false
    .catch(err => console.error(err));
  
  const tempUrl = "https://discord.gg/DdMJXskh";
  getInviteExpiration(tempUrl)
    .then(result => console.log(result)) // 输出Date实例
    .catch(err => console.error(err));
}

额外说明

Google Apps Script支持async/await语法,但需确保脚本运行环境基于V8引擎(当前默认已启用,旧项目可检查项目设置确认)。另外调用Discord API时需注意请求频率限制,避免触发封禁机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:55:05