我有一个Office插件,正在尝试在桌面上更新文档的标题。我尝试了2种不同的方式,但它们都无法在台式机上使用。它可以在线上运行,但不能在桌面上运行。
Word.run(async (context) => {
var newTitle = document.getElementById("inputTitle") as HTMLInputElement;
console.log(newTitle.value);
context.document.properties.title = newTitle.value;
});
此代码可在线运行,但不能在桌面上运行。我也尝试过这样做。
Office.context.document.customXmlParts.getByNamespaceAsync("http://schemas.openxmlformats.org/package/2006/metadata/core-properties",
function (resultCore) {
var xmlPart = resultCore.value[0];
xmlPart.getNodesAsync('*/*', function (nodeResult) {
for (var i = 0; i < nodeResult.value.length; i++) {
var node = nodeResult.value[i];
console.log("BaseName: ")
console.log(node.baseName);
if (node.baseName === "title") {
var newTitle = document.getElementById("inputTitle") as HTMLInputElement;
console.log("title that you entered: " + newTitle.value);
console.log(node);
node.setNodeValueAsync(newTitle.value, { asyncContext: "StateNormal" }, function (data) { });
}
}
});
});
有人知道为什么它不起作用或对我的问题有其他解决方案吗?
答案 0 :(得分:0)
以下代码对我适用,包括在台式机上。请注意,您必须await
Word.run
。另外,您必须加载标题,然后进行同步,以确保已更改了实际文档上的标题,而不仅仅是在任务窗格代码中的代理对象中。
await Word.run(async (context) => {
var newTitle = document.getElementById("inputTitle") as HTMLInputElement;
console.log(newTitle.value);
context.document.properties.title = newTitle.value;
const myProperties = context.document.properties.load("title");
await context.sync();
console.log(myProperties.title);
});