Office。在Excel桌面中创建和设置时,无法在Excel Online中检索设置

Office。在Excel桌面中创建和设置时,无法在Excel Online中检索设置,excel,settings,office-js,office-addins,scriptlab,Excel,Settings,Office Js,Office Addins,Scriptlab,根据API文档,每个外接程序和每个文档都保存对象。也就是说,它们仅对创建它们的外接程序可用,并且仅从保存它们的文档中可用 我对Office.Settings界面有点困惑。我在ScriptLab加载项中创建了一个要点,在这里我设置了两个设置对象(查询和查询ID),然后检索它们(将它们记录到控制台) 要点: 如果我在Excel桌面上运行此要点,那么我可以创建设置并成功检索它们。如果保存此工作簿并在Excel Online中打开它,然后再次运行gist,则无法检索设置,它会为两个设置对象返回null

根据API文档,每个外接程序和每个文档都保存对象。也就是说,它们仅对创建它们的外接程序可用,并且仅从保存它们的文档中可用

我对Office.Settings界面有点困惑。我在ScriptLab加载项中创建了一个要点,在这里我设置了两个设置对象(查询和查询ID),然后检索它们(将它们记录到控制台)

要点:

如果我在Excel桌面上运行此要点,那么我可以创建设置并成功检索它们。如果保存此工作簿并在Excel Online中打开它,然后再次运行gist,则无法检索设置,它会为两个设置对象返回null

据我所知,ScriptLab外接程序对于桌面版和在线版是相同的,我是否遗漏了什么,或者如果在桌面版中创建并设置了设置,OfficeJS是否打算不在在线版中提供/显示这些设置

找到设置桌面:

在线设置空:

基于外接程序的id存储Office外接程序的设置。 通过侧向加载安装后,每次都会为外接程序分配一个新id。 这意味着您在开发时无法在多个平台上同步设置

将外接程序提交到AppSource后,AppSource中的静态id将分配给外接程序,并在安装AppSource中的外接程序时使用


因此,您应该将外接程序提交到AppSource以测试/实现此功能。

感谢您提出的问题。我无法反驳你的问题。你能试试我下面的代码片段吗

异步函数getSetting(){ 等待Excel.run(异步(上下文)=>{ 常量设置=context.workbook.settings; 设置。添加(“设置1”,真); const count=settings.getCount(); wait context.sync(); log(`我们总共有${count.value}设置。`); const setting1=settings.getItemOrNullObject(“setting1”); 设置1.荷载(“值”); wait context.sync(); log(`setting1的值:`+setting1.value); const setting2=settings.getItemOrNullObject(“setting2”); 设置2.荷载(“值”); wait context.sync(); log(`设置的值:`+setting2.value); }); } 桌面和在线上的预期结果应如下所示


我完全理解您的上述推理,但是,ScriptLab是商店中的一个应用程序,因此据我所知,它应该有一个静态id,并且在上述测试期间不会被加载。谢谢您的回答。据我所知,这两件事并不相同。在您的示例中,使用工作簿.Settings,然后使用add方法添加设置。我无法使用此函数,因为它仅在ExcelApi 1.4版中受支持,并且我们的客户正在运行ExcelApi 1.1版。我们只能像在我的代码片段中一样使用Office.Settings界面。我确实测试了你的代码片段,它的工作原理与我预期的一样,但正如上面的评论所述。我无法使用工作簿.设置,因为我们的终端要求。