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

Office Scripts中SHA-256实现返回空对象,请求排查问题

问题原因及解决方法

你的代码核心问题是没有正确处理异步函数的调用:

  • sha256 是异步函数(带有async关键字),调用它时必须使用await来等待其执行完成并获取返回值。
  • 原代码中main是普通函数,直接调用sha256("abc123")会返回一个Promise对象,而非最终的哈希字符串,控制台输出的{}就是这个Promise对象的序列化结果。

修正后的代码

async function main(workbook: ExcelScript.Workbook) {
  let temp = await sha256("abc123")
  console.log(temp)
}

async function sha256(message:string) {
  // encode as UTF-8
  const msgBuffer = new TextEncoder().encode(message);

  // hash the message
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);

  // convert ArrayBuffer to Array
  const hashArray = Array.from(new Uint8Array(hashBuffer));

  // convert bytes to hex string                  
  const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
  return hashHex;
}

关键修改点

  • 将main函数改为async函数,这样内部可以使用await关键字。
  • 在调用sha256时添加await,等待异步操作完成后再获取哈希值并打印。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:50:33