SharePoint から複数の .csv ファイルを取得する必要があります。
Postman経由でこのリクエストを行う場合
https://mycompany.sharepoint.com/teams/a/g/_api/web/GetFolderByServerRelativeUrl('Data%20Sources\')/Files('sharepoint_test.csv')/$value
ヘッダー付き
Authorization: Bearer eyJ...
Accept: application/json;odata=verbose
「test_sharepoint.csv」の内容を取得します。
column a,column b,column c
32,523,88
46,34,659
25,767,78
一度に複数のファイルをダウンロードする必要がありますが、SharePoint はそのためのエンドポイントを提供していないようです。したがって、 python とgrequestsを使用すると、応答は返されますが、バイナリ データは返されません。
>>> base_url = "https://mycompany.sharepoint.com/teams/a/g/_api/web/GetFolderByServerRelativeUrl('Data%20Sources\')/"
>>> url_1 = "Files('sharepoint_test.csv')/$value"
>>> url_2 = "Files('sharepoint_test_2.csv')/$value"
>>> allurls = [base_url + url_1, base_url + url_2]
>>> headers = {"Authorization": authtoken, "Content-Type": "application/json;odata=verbose", "Accept": "application/json;odata=verbose"}
>>> rs = (grequests.get(u, headers=headers, stream=True) for u in allurls)
>>> s = grequests.map(rs)
>>> s
[<Response [200]>, <Response [200]>]
>>> data = open(s[0], "rb").read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: expected str, bytes or os.PathLike object, not Response
実際にバイナリデータを取得するにはどうすればよいgrequests
ですか?