从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?JMP 最近获得了打开 Google 表格的内置功能。在此之前,我在脚本中调用一个名为 Googlesheets 的 R 包来打开它们。现在我的公司正在迁移到 Office 365,因此我们将拥有基于云的共享 Excel 工作表,但我不确定如何能够读取这些工作表。有人直接在 JMP/JSL 中打开这些吗?
自动化和脚本编写回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?我做了一个类似的尝试,但我在新窗口中放置了一个网络浏览器框。这给了我一个可以关闭的显示框。
credentials = New Window( "quick open", Web Browser Box( "path to site" ) );<BR />credentials<<CLOSE window=""></CLOSE>
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?谢谢,但不幸的是它似乎无法与 O365 URL 一起使用(既按原样又在下载后=1?)。
我收到消息:无法解析主机我的公司.sharepoint.com
这很奇怪,因为同一种 URL 对于 .jmp 数据表和 open() 来说工作得很好。
马泰奥
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?这并非特定于 o365,而是从 URL 作为本地路径打开 .jmpaddin。 至少我看到了本地路径和其他非办公室 URL 之间的区别。
这是我从同事那里得到的一种刷新位于可通过 URL 访问的位置的插件的方法...使用 NewHTTPRequest() 获取文件,放入本地位置,然后 open()

回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?你好,
我有一个类似的问题。 这里提出的解决方案适用于 .jmp 文件,但不适用于存储在 O365 中的 .jmpaddin 文件,我想直接从 JSL 脚本打开该文件。我收到“无法打开”错误。如果我打开本地 .jmpaddin 文件,一切正常。
有什么建议吗?
谢谢
马泰奥
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?好吧,我的大问题被同事指出了......我的文件链接看起来不像我显示的那样干净整洁(我可以看到这一点,但他有一个来自我们系统的示例做过)。我确实以不同的方式获得了文件的链接(包括浏览器中显示的 URL 和带有选项“复制链接”的共享按钮),并且它们在粘贴到 Chrome 或 Microsoft Edge 浏览器中时都有效,但不是像这样结束...
文件夹/子文件夹/文件%20name.xlsx
他们都有这样的额外东西......
%7B21C93788-01B3-4508-8EC9-5451FBB8AEB6%7D
所以即使我把它简化为“?”在文件名之后,我没有明显正确的 URL 类型来使其工作。
然后可能有必要执行我建议的第二部分,即通过 Web() 登录以在 JMP 特定浏览器中输入凭据,但我不确定,因为我之前已经这样做了(所以不确定它是否适用于此URL 基于其他浏览器是否保存的凭据)。现在我有了一个更好版本的 URL,它可以很好地从 JSL 打开。不需要 ?download=1 并且到目前为止不仅记住了会话的凭据,我已经重新启动了 3 次,并且每次都可以从一开始就执行此操作,而无需请求凭据...
打开(” https://company.sharepoint.com/:x:/r/sites/Site/Shared%20Documents/Folder/Subfolder/File%20name.xlsx ”);
我现在唯一的问题是,由于我没有明确发送凭据,我不确定什么可能会让它忘记它们,但到目前为止,它似乎很擅长记住它们。
谢谢!
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?谢谢! 如上所述,我现在正在寻求技术支持。 我不确定我的问题是否与我们的实施有关(目前只是一个试用沙箱,因为我们尚未切换到 o365),还是有关通过 JMP 使用凭证的一般问题。 但这就是当我尝试你的想法时会发生的事情.. 获取凭证页面后,我可以打开父页面,就像您直接在 JMP Web 窗口中显示的那样。 这是 o365 主页,看起来就像在其他浏览器中一样。 但这不仅不允许 Open() 工作,而且我实际上无法在那里打开子 Excel 工作表。 父页面列出了工作表,但如果我尝试输入工作表的 URL(在我已登录的 JMP Web 窗口中),我会看到“抱歉,您无权访问”页面,但它可以正常工作在 Chrome 或 Microsoft Edge 中。 如果我只是尝试通过单击 JMP Web 窗口中的父页面以交互方式打开工作表 - 它会在 Chrome 中打开!回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?谢谢....实际联系了技术支持我基于这篇文章(可能与您的回复有关,表明这对他们来说是一个问题)。多么酷啊?!没有立即产生解决方案,但可能会产生,我很感激。
但也是因为我怀疑可能有 JMP 之外的解决方案,我仍然有兴趣看看是否有其他处于类似情况的用户找到了任何东西 - 比如可能是用于与 o365 对话的 python 包解决方案...
我正在寻找一种处理凭据的全自动解决方案。
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?首先尝试在 JMP Web 窗口中打开文件或父目录。这应该会打开登录屏幕,您可以在其中输入凭据。 一旦您在 JMP 会话中登录一次,这些凭据就应该随后续的 open 调用一起传递。可能有一种方法可以自动化,但我不确定如何实现。
Web( "https://teams.microsoft.com", JMP window );
由于您提到在 R 中获取此数据,因此您始终可以调用 R 代码直接从 JMP 获取数据。
我赞同 txnelson 的建议,为此开具 JMP 票证;它不应该那么难。
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?我建议您将此问题提交给 JMP 支持团队。
support@jmp.com
如果他们目前不支持,那么这必须是他们需要能够支持的东西。通过联系支持团队,问题将被跟踪直至实施。
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?谢谢! 这很有帮助,但对我不起作用。我收到 403 错误,我假设我需要某种方法来传递凭据才能使其工作(尽管目前我只有 o365 实现的测试环境,真正的企业版本也将受到密码保护。我不能在没有登录的情况下使用浏览器去那里。)。JMP 内置 googlesheets 解决方案和我使用的 R 解决方案都使用了 OAuth。
在类似的情况下,这对您有用吗?您必须登录浏览器才能访问工作表,但如果 JMP 知道 URL,它就可以打开?
回复:从 JMP/JSL 打开 Microsoft Office 365 基于云的 Excel?看起来需要几个步骤才能做到这一点:
- 在 Office 365/sharepoint/teams/etc 中,获取文件的链接(通常在 Web 浏览器中打开文件)
- 删除 ? 之后的所有内容在链接中并将其替换为 download=1
- 在本地保存文件的副本,并使用您的首选设置在 JMP 中打开它,然后打开并复制保存到该数据表的“源”脚本。
- 将文件位置替换为您刚刚修改的 url。
你的脚本看起来像这样:
dt = Open("https://company.sharepoint.com/:x:/r/sites/Site/Shared%20Documents/Folder/Subfolder/File%20name.xlsx?download=1",
Worksheets( "Sheet 1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);运行它,希望您能看到 Excel 数据。祝你好运!