我在尝试使用 Microsoft Graph 编写脚本以将 Excel 文件上传到 OneDrive 然后读取 Excel 文件时出错。
我按照Microsoft 文档在没有用户的情况下获取访问令牌。我成功获得了访问令牌,但在使用访问令牌调用 OneDrive API 时出错。
这是回应:
{
"error": {
"code": "BadRequest",
"message": "Tenant does not have a SPO license.",
"innerError": {
"request-id": "5ec31d17-3aea-469f-9078-de3608f11d0d",
"date": "2017-10-10T04:34:05"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在调用图形 API 时需要拥有 SPO 许可证以及如何获取它。由于此错误消息,所以我正在尝试购买 SPO 许可证。
根据此文档,我认为我应该在许可证页面中看到许多产品,但是在使用 Azure 门户登录并转到许可证页面时,我只看到 2 个产品:Azure AD Premium 和 Enterprise Mobility Suite:

我需要通过命令行将文件上传到 OneDrive。这将通过分发给最终用户的批处理文件来完成。
\n通过在 Stack Overflow 上搜索,我发现了类似这样的问题,其中提到您需要使用 Azure 注册应用程序并创建应用程序密码。我没有在我工作的组织中执行此操作所需的权限,也无法执行任何需要管理员帐户的操作。所以我无法安装任何软件 - 我必须使用 Windows 10 附带的软件。我也无法使用 VBA,因为它被阻止了。
\n我已经成功地从 OneDrive 下载文件,没有任何类似的东西,使用此处描述的过程:
\n\n\n\n
\n- 在任一浏览器中打开 URL。
\n- 使用 Ctrl+Shift+I 打开开发人员选项。
\n- 转到网络选项卡。
\n- 现在点击下载。不需要保存文件\xe2\x80\x99。我们只需要浏览器从服务器请求文件时的网络活动。
\n- 将出现一个新条目,类似于 \xe2\x80\x9cdownload.aspx?\xe2\x80\xa6\xe2\x80\x9d。
\n- 右键单击该 和
\nCopy \xe2\x86\x92 Copy as cURL。- 将复制的内容直接粘贴到终端中,并追加 \xe2\x80\x98--output file.extension\xe2\x80\x99 将内容保存在 file.extension 中,因为\n终端无法显示二进制文件数据。
\n例子:
\nRun Code Online (Sandbox Code Playgroud)\ncurl https://xyz.sharepoint.com/personal/someting/_layouts/15/download.aspx?UniqueId=cefb6082%2D696e%2D4f23%2D8c7a%2\n\xe2\x80\xa6。一些长文本 \xe2\x80\xa6.\ncCtHR3NuTy82bWFtN1JBRXNlV2ZmekZOdWp3cFRsNTdJdjE2c2syZmxQamhGWnMwdkFBeXZlNWx2UkxDTkJic2hycGNGazVSTnJGUnY1Y1d0WjF5SDJMWHBqTjRmcUNUU WJxVnZYb1JjRG1WbEtjK0VIVWx2clBDQWNyZldid1R3PT08L1NQPg==;\ncucg=1\xe2\x80\x99 --压缩--输出文件.扩展名
\n
在浏览器上单击“上传”后,我尝试执行类似的操作,但在尝试过滤请求时没有找到任何有用的东西。
\n我找到了这 两个问题,但没有上传键盘快捷键,AFAICT。此外,最终用户还将文件上传到我从 OneDrive 与他们共享的文件夹中。将 Chrome 或 Edge 作为最小化窗口打开很好,但我不能只是将一个窗口推到他们面前,自动点击一些东西 …