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
相关产品推荐
相关产品推荐

