我正在Excel JS中创建一个我想与其他Office.js功能一起使用的自定义函数。我正在尝试像这样在自定义函数中初始化Office.js:
async function getData(indicator, date, handler) {
await Office.onReady();
if (date !== "earliest" && date !== "latest" && !date.includes("-")) {
const newDate = new Date((parseFloat(date) - (25567 + 2))*86400*1000); // Converts Excel date, days since 1900, to YYYY-MM-DD as per https://gist.github.com/christopherscott/2782634
date = formatDate(newDate)
}
dd_value = new DDValue("A1", indicator, date)
console.log(dd_value)
try {
await Excel.run(function (context) {
var range = context.workbook.getSelectedRange();
range.load("address");
return context.sync()
.then(function () {
console.log(`The address of the selected range is "${range.address}"`);
});
}).catch(errorHandlerFunction);
} catch(error) {
console.log("ERROR")
console.log(error)
}
}
但是,出现以下错误:
Uncaught TypeError: Cannot redefine property: context
Uncaught Error: Office.js has not fully loaded. Your app must call "Office.onReady()" as part of it's loading sequence (or set the "Office.initialize" function). If your app has this functionality, try reloading this page.
我也曾尝试在index.html页面(只是标题中的脚本)中初始化Office.js,但这也不起作用。
有人试图在自定义函数中实现其他Office.js功能吗? Office.js初始化如何为您工作?
预先感谢
答案 0 :(得分:1)
今天这不可能,但已经引起我们的注意。
a)我们正在积极开发该功能,以传递该函数的调用单元格的地址(在此情况下,所选范围不起作用,因为用户可能选择的单元格与您输入的功能不同)。
b)如果您需要其他API,是否想知道您的情况?我们将以某种方式将office.js公开给自定义函数,但我们在此通常要谨慎,因为在计算过程中回叫excel可能会导致不可预测的结果(如今天XLL和VBA UDF所存在的那样)。
谢谢!