1 回答
TA贡献1853条经验 获得超18个赞
我相信你的目标如下。
您想从 Drive API 中的“files.get”方法检索到的缩略图链接中检索缩略图。
从示例缩略图链接中,您想从 Google 文档(文档、电子表格等)中检索缩略图。
问题和解决方法:
目前阶段,从缩略图看的情况似乎404
是bug。这已经报告给了谷歌问题跟踪器。Ref谷歌方面似乎已经为人所知。不幸的是,我认为这是当前的直接答案。而且,我相信这个问题会在未来的更新中得到解决。
在这里,作为当前的解决方法,将其转换为 PDF 文件并检索缩略图如何?在这种情况下,可以使用缩略图链接。此解决方法的流程如下。
将 Google 文档转换为 PDF 文件。
PDF 文件创建到与 Google 文档相同的文件夹中。
从创建的 PDF 文件中检索缩略图链接。
将上面的流程转换成python脚本后,就变成了下面这样。
示例脚本:
在使用此脚本之前,请设置访问令牌和文件 ID。在这种情况下,为了用multipart/form-data
简单的脚本请求,我使用了requests
库。
import json
import httplib2
import requests
import time
http = httplib2.Http()
access_token = '###' # Please set the access token.
file_id = '###' # Please set the file ID.
headers = {"Authorization": "Bearer " + access_token}
# 1. Retrieve filename and parent ID.
url1 = "https://www.googleapis.com/drive/v3/files/" + file_id + "?fields=*"
res, res1 = http.request(url1, 'GET', headers=headers)
d = json.loads(res1.decode('utf-8'))
# 2. Retrieve PDF data by converting from the Google Docs.
url2 = "https://www.googleapis.com/drive/v3/files/" + file_id + "/export?mimeType=application%2Fpdf"
res, res2 = http.request(url2, 'GET', headers=headers)
# 3. Upload PDF data as a file to the same folder of Google Docs.
para = {'name': d['name'] + '.pdf', 'parents': d['parents']}
files = {
'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
'file': res2
}
res3 = requests.post(
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
headers=headers,
files=files
)
obj = res3.json()
# It seems that this is required to use by creating the thumbnail link from the uploaded file.
time.sleep(5)
# 4. Retrieve thumbnail link of the uploaded PDF file.
url3 = "https://www.googleapis.com/drive/v3/files/" + obj['id'] + "?fields=thumbnailLink"
res, res4 = http.request(url3, 'GET', headers=headers)
data = json.loads(res4.decode('utf-8')) # or data = json.loads(res4)
print(data['thumbnailLink'])
# 5. Retrieve thumbnail.
response, content = http.request(data['thumbnailLink'])
print(response['status'])
print(content)
运行此脚本时,Google Docs 文件将导出为 PDF 数据,PDF 数据将上传到 Google Drive 并检索缩略图链接。
笔记:
在这种情况下,请将范围包括
https://www.googleapis.com/auth/drive
到您的访问令牌的范围内。因为文件上传了。为了检索文件元数据和导出 PDF 文件并上传数据,需要使用访问令牌。但是当从缩略图链接中检索到缩略图时,不需要使用访问令牌。
2020年1月之后,access token不能与查询参数一起使用
access_token=###
,请在请求头中使用access token。解决上述问题后,我认为您可以使用您的脚本。
添加回答
举报