Office.context.document.settings.get 的问题
Issue with Office.context.document.settings.get
我正在使用以下方法从 Word 文档中读取设置:
function callbackFunction(){
var varValue = Office.context.document.settings.get("VariableName");
}
此调用是在调用 :
之后立即调用的
Office.context.document.settings.refreshAsync(callbackFunction);
设置存储在有效的 JSON 字符串 WebExtensionProperty 中:
我可以在 Open XML 生产力工具中看到设置对象,没有问题
We.WebExtensionProperty prop = new We.WebExtensionProperty(){ Name = "VariableName", Value = "{\"A\":\"1\"}" };
webExtensionPropertyBag1.Append(prop);
- 当我 运行 我的 office-js 加载项从 Visual Studio 进入 Word(使用 IE)时,函数 returns 是 JSON 的正确对象存储在 WebExtensionProperty 中的字符串,
当我将加载项旁加载到 Word 中(使用 IE)时,函数也 return 正确,但是
当我将加载项旁加载到 Word 在线(也使用 IE,即使使用 Chrome)时,函数始终 return 为空!
当我从 OneDrive 下载文档时,我的 属性 还在文件中。
我尝试在 json 字符串中使用简单变量,但我从来没有设法在此处获取 Word Online return 任何值,而桌面上的 Word 始终完美无缺。
我需要做些什么才能'authorize'使用这个功能吗?
有人在 Word Online 中用过这种方法吗?
我写入文件使用的设置是:
new We.WebExtensionStoreReference(){ Id = "MyUniqueId", Version = "1.0.0.0", Store = "\\localhost\OfficeManifest", StoreType = "Filesystem" };
当我在 Word online 上使用它时,会不会是侧载使得相同的加载项不在我的 UNC 路径中,因此 Word online 无法加载该值?
我在侧载时使用的清单在所有情况下都是相同的。
谢谢
此问题是旁加载加载项的症状。对此的一些背景知识可能会有所帮助。
某些加载项功能(例如“设置”)是针对特定加载项的。这使您可以确保您的设置不会被恰好使用相同设置名称的另一个加载项覆盖。当您从 Office 检索您的设置时,它只会返回那些最初属于您的加载项的设置。此属性已从您的清单中删除加载项的 ID
。
当加载项从应用商店或租户的加载项目录加载时,加载项会从您的清单文件中为该加载项分配 id
。由于此值不会更改,因此您可以跨平台和加载项版本维护设置。
侧载的工作方式不同。当您旁加载加载项时,Office 会为其分配一个随机生成的 ID。这样做是为了确保您的开发和生产版本可以在同一台机器上并排共存。如果 Office 使用清单中的 ID,它会有效地删除加载项的生产版本。
在大多数情况下,侧面加载的效果不会影响您的加载项。除非您尝试在 machines/platforms 中测试设置,其中自动生成的 ID 会断开您的加载项与其设置之间的连接。
解决方法是在此处使用 developer tenant and centrally publish your add-in。这将自动处理您的加载项在每个平台上的部署,并确保它们都使用相同的 ID
值。
我正在使用以下方法从 Word 文档中读取设置:
function callbackFunction(){
var varValue = Office.context.document.settings.get("VariableName");
}
此调用是在调用 :
之后立即调用的Office.context.document.settings.refreshAsync(callbackFunction);
设置存储在有效的 JSON 字符串 WebExtensionProperty 中: 我可以在 Open XML 生产力工具中看到设置对象,没有问题
We.WebExtensionProperty prop = new We.WebExtensionProperty(){ Name = "VariableName", Value = "{\"A\":\"1\"}" };
webExtensionPropertyBag1.Append(prop);
- 当我 运行 我的 office-js 加载项从 Visual Studio 进入 Word(使用 IE)时,函数 returns 是 JSON 的正确对象存储在 WebExtensionProperty 中的字符串,
当我将加载项旁加载到 Word 中(使用 IE)时,函数也 return 正确,但是
当我将加载项旁加载到 Word 在线(也使用 IE,即使使用 Chrome)时,函数始终 return 为空!
当我从 OneDrive 下载文档时,我的 属性 还在文件中。
我尝试在 json 字符串中使用简单变量,但我从来没有设法在此处获取 Word Online return 任何值,而桌面上的 Word 始终完美无缺。
我需要做些什么才能'authorize'使用这个功能吗? 有人在 Word Online 中用过这种方法吗?
我写入文件使用的设置是:
new We.WebExtensionStoreReference(){ Id = "MyUniqueId", Version = "1.0.0.0", Store = "\\localhost\OfficeManifest", StoreType = "Filesystem" };
当我在 Word online 上使用它时,会不会是侧载使得相同的加载项不在我的 UNC 路径中,因此 Word online 无法加载该值?
我在侧载时使用的清单在所有情况下都是相同的。
谢谢
此问题是旁加载加载项的症状。对此的一些背景知识可能会有所帮助。
某些加载项功能(例如“设置”)是针对特定加载项的。这使您可以确保您的设置不会被恰好使用相同设置名称的另一个加载项覆盖。当您从 Office 检索您的设置时,它只会返回那些最初属于您的加载项的设置。此属性已从您的清单中删除加载项的 ID
。
当加载项从应用商店或租户的加载项目录加载时,加载项会从您的清单文件中为该加载项分配 id
。由于此值不会更改,因此您可以跨平台和加载项版本维护设置。
侧载的工作方式不同。当您旁加载加载项时,Office 会为其分配一个随机生成的 ID。这样做是为了确保您的开发和生产版本可以在同一台机器上并排共存。如果 Office 使用清单中的 ID,它会有效地删除加载项的生产版本。
在大多数情况下,侧面加载的效果不会影响您的加载项。除非您尝试在 machines/platforms 中测试设置,其中自动生成的 ID 会断开您的加载项与其设置之间的连接。
解决方法是在此处使用 developer tenant and centrally publish your add-in。这将自动处理您的加载项在每个平台上的部署,并确保它们都使用相同的 ID
值。