问题标签 [scriptlab]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
office-js - 脚本实验室中 ajax 调用的 CORS 问题
我正在测试 excel 中的scriptlab插件
我尝试对外部端点执行休息调用,如下所示
以上工作正常。但是在启用 CORS 的端点上,我得到了 xhr.readyState 0 。
如何避免 CORS 问题?(我不是终点的所有者)
office-js - 将 Excel 表格的整列格式化为字符串
我正在使用 JavaScript API 开发 Excel 加载项,以在 Excel Office 365 中构建加载项。对于 Excel 表,如何将整个列格式化为默认情况下仅包含字符串。[我需要在特定列的所有单元格中将数字显示为 012 而不是 12。]
office-js - ctx.workbook.getSelectedRange() 为工作表名称中的每个单引号 ' 返回双单引号 ' '
如果工作表名称是我工作表的数据,则返回的范围对象 的m_address
和m_addressLocal
属性将如下所示
"'my sheet''s data'!A1:B2"
如果在其他 API 调用中按原样使用,它们将失败。
解决方法是在更高层进行字符串替换,因为无法直接更改 range.address 属性。
office-js - `context.document.body.insertOoxml` 破坏文档,使单词崩溃
我知道这不是一个问题,但我是由 Rick Kirkham 从这里发送到这里的,显然询问 SO 是为 Microsoft 产品提交错误的方法:-p
当我使用insertOoxml
'replace' 参数时,Word 会在末尾插入额外的内容。例如,当在Script Lab中使用以下代码时,带有一个新的空 word 文档:
每次触发此代码时,word 文档都会在正文末尾获取一个额外的段落。当文档以内容控件结尾时会变得更疯狂:获取一个新文档,插入一个新的富文本内容控件。触发run
将复制内容控件并将其插入到自身内部(因此您有两个内容控件,其中一个包含在另一个内容控件中)。单击run
几次将创建大量嵌套的内容控件并减慢 Word 爬行速度。插入纯文本内容控件并触发两次“运行”会导致单词崩溃(似乎是空指针取消引用)。
这不是与 Script Lab 相关的问题,但使用 Script Lab 是重现它的最简单方法。
Word 版本:1703,内部版本 7967.2139,2016 MSO (16.0.7927.1020) 32 位。
预期行为:Word 不会崩溃,也不会引入额外的内容。
好的,让我们提出一个问题:如何在insertOoxml(ooxml, 'replace')
不破坏文档的情况下使用完整文档?
office-js - 在 ScriptLab 的 JavaScript 项目中使用 Office UI Fabric 时出现语法错误
在一个新的 ScriptLab 的JavaScript项目中,我添加了以下库来获取 Office UI Fabric 功能:
所以我写了这个脚本(只注意fabric
单词):
fabric
我在关键字中得到红线错误语法。我知道如果项目是 TypeScript 而不是 JavaScript 项目,我可以在脚本顶部写下这个来防止这种情况:
但是,我应该在 JavaScript 部分的顶部写什么?我应该补充一点,该项目运行正常,艰难。
office-js - 等待异步函数返回范围对象
我想使用一个函数来返回一个范围对象,但是因为该函数是异步的,所以当我的代码到达时currentRangeSelection.select();
,它仍然是null
. 如何强制代码等待函数getCurrentRangeSelection
,以便我可以获取对象undefined
?
编辑 1 - Rick Kirkham:我已经简化了代码,所以现在可以将其粘贴到 ScriptLab 中的默认基本 API 调用 (JavaScript)模板中进行测试。
在研究了几个小时的 Promises 之后,我想我已经接近了我想要的,但它仍然不起作用:
如您所见,现在函数返回 aPromise
因为它(我认为)是Excel.run
函数的返回值,现在我将所需的返回范围作为参数传递,但仍然不起作用。还有什么提示吗?
编辑 2 - Rick Kirkham
(1) 我试图创建一个返回 Promise 的函数,所以我可以将它插入到调用者then
链中。因此,我唯一的选择是将返回范围的参数作为引用传递。
(2) 是的,我同意你的看法。我认为 (1) 解释了为什么我没有首先返回范围对象。
(3) 是的,我解决了这个问题。
(4) 原始函数更复杂,Office-JS API 中的单个方法不会返回我真正想要的。我通过这样做解决了我的问题:
我在编辑时回答的下一个问题是:“如果我希望函数getCurrentRangeSelection
返回一个已经存在的loaded
对象怎么办?”
感谢您的示例和答案!
office-js - ScriptLab 消息随机错误
使用 ScriptLab 时,我在 Excel 2016 的“运行”窗格的控制台中随机收到此错误:
此控制台错误消息不是在“部署”我的项目后立即出现,而是在几秒钟后出现。
我的项目运行正常,没有控制台错误,并且按预期工作,很艰难。
这是一个错误吗?
编辑:我能够创建一个非常小的 YAML 片段来显示问题。尝试运行此示例。我发现如果您取消注释 Office.initialize 行,则该错误不会再发生。
office-js - Scriptlab 在 Excel 和 Word 中抛出“'$' is undefined”错误
尝试在Scriptlab中运行示例,并获得经典的“'$' is undefined”javascript 错误。这通常表示加载/URL 问题,但是关于如何在 Scriptlab 中处理该问题的任何想法?
步骤: 1) 从https://aka.ms/getscriptlab下载 scriptlab 2) 环境是 windows 10 与 office 365 proplus 订阅(延迟频道) 3) 尝试运行基本 API 示例
完整的错误是:
该示例应将当前选定的范围着色为黄色,但由于上述错误而失败。
-- 编辑:原来,这是由我们防火墙中的内容过滤引起的。更改内容过滤类别(将其关闭/将 Microsoft 站点排除在过滤之外)解决了这个问题,现在它可以工作了。无需更改插件/脚本实验室。
office-js - 如何获取 Excel 工作簿中的工作表列表并在加载项 UI 中显示它们?
我正在尝试在 Office JS 加载项中做一些工作。
我已经通过 yeoman 查看了 Script Lab 和侧载。
除了学习 Office 和 Excel API 本身之外,我还没有找到足够的示例代码来克服学习如何使用 React / Typescript 的困难。
如果有人可以演示脚本实验室“列表工作表”示例的简单扩展,将工作表列表放入任务面板(附加 UI)而不是简单地将它们转储到 console.log(),那将是非常棒的。
此外,还有一个后续问题:我的目标是从 Google 表格应用程序脚本中移植一些代码,以便我们可以在 Excel 中做同样的事情。该项目仅针对一个工作簿,不会分发。是在真正的 Office 加载项上下文中执行此操作并承受侧载(我们真的总是必须运行单独的节点服务器吗!?)还是尝试在 Script Lab 中完成这一切更好?我喜欢 Script Lab 路线的轻松,但我担心因为它贴满了警告,它是用于实验和原型设计而不是生产工作。
javascript - 如何获取 office.js 中的所有名称(不是值)?
我有几个“命名”范围。我正在尝试获取范围的名称,而不是值。
我尝试了以下方法:
我不知道如何从上面的脚本中获取名称