如何从列表 python 中提取 google 驱动器文件 ID?
how to pull google drive file id's from list python?
大家好,我的 google 驱动器中有多个文件,我需要获取文件 ID 才能与他人共享下载链接。但我似乎一次只能获得 1 个文件 ID。有没有办法提取所有文件 ID 并将它们与列表匹配?
在我的名单A,B C
每个字母代表一个订单号我试图保持简单但 A 实际上是一个订单号 3472834,B=3293881,C=,3498249。
在google驱动器示例中:File1,File2,File3
我的 google 驱动器中的文件是订单的 pdf 打印输出。它们实际上被命名为订单号 File 1= 3472834, File 2= 3293881, File 3 =3498249
所以我的目标是遍历每个 ListIDS 并获得相应的 Google 文件 ID。但我似乎无法做到,但每次第一个 google 文件 ID。
代码:
ListIDS= ['A','B','C']
for eachId in ListIDS:
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
filename= f'{ListID}'
query = "name contains " + "'"+ filename +"' and trashed = false"
response = service.files().list(q=query, fields= 'files(id,name)').execute()
files = response.get('files')
if files:
print("File Found!")
google_file_name= files[0].get('name')
google_file_id = files[0].get('id')
print (google_file_id)
print(google_file_name)
else:
print("FileNot Found")
FileURL= "https://drive.google.com/file/d/"+ google_file_id + "/view?usp=sharing"
但同样的问题是,例如,我只得到所有 3 个列表 id 的第二个值 B
output:
https://drive.google.com/file/d/FileB_ID_Path/view?usp=sharing
但我的预期结果是:
https://drive.google.com/file/d/FileA_ID_Path/view?usp=sharing
https://drive.google.com/file/d/FileB_ID_Path/view?usp=sharing
https://drive.google.com/file/d/FileC_ID_Path/view?usp=sharing
请帮忙。
我相信你的目标如下。
- 您的文件名类似于
ListIDS= ['A','B','C']
。这些文件名的文件放在您的 Google 驱动器中。
- 您想使用文件名检索文件的文件 ID。
- 您想使用 googleapis 实现此目的 python。
这样的话,下面的修改怎么样?
模式一:
在此模式中,使用 ListIDS= ['A','B','C']
,使用一个搜索查询。
ListIDS = ['A','B','C'] # filenames
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
qFiles = ["name contains " + "'" + e + "'" for e in ListIDS]
query = "(" + " or ".join(qFiles) + ") and trashed = false"
response = service.files().list(q=query, fields='files(id,name)').execute()
files = response.get('files')
values = {}
for e in files:
for f in ListIDS:
if f in e.get('name'):
id = e.get('id')
v = "https://drive.google.com/file/d/" + id + "/view?usp=sharing"
if values.get(f):
values[f].append(v)
else:
values[f] = [v]
print(values)
当此脚本为运行时,返回以下JSON对象。
{
'A': ["https://drive.google.com/file/d/###/view?usp=sharing"],
'B': ["https://drive.google.com/file/d/###/view?usp=sharing"],
'C': ["https://drive.google.com/file/d/###/view?usp=sharing", "https://drive.google.com/file/d/###/view?usp=sharing"]
}
从您的显示脚本中,name contains '###'
被用作搜索查询。因此,当有多个文件由一个文件名返回时,这些文件 ID 将放入数组中。
模式二:
如果ListIDS
很大,上述模式可能无法使用。因此,当模式 1 无法使用时,请使用模式 2。在此模式中,使用 ListIDS= ['A','B','C']
,使用多个搜索查询。
ListIDS = ['A','B','C'] # filenames
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
files = []
for filename in ListIDS:
query = "name contains " + "'" + filename + "' and trashed = false"
response = service.files().list(q=query, fields='files(id,name)').execute()
files.extend(response.get('files'))
values = {}
for e in files:
for f in ListIDS:
if f in e.get('name'):
id = e.get('id')
v = "https://drive.google.com/file/d/" + id + "/view?usp=sharing"
if values.get(f):
values[f].append(v)
else:
values[f] = [v]
print(values)
- 在这种情况下,得到与上述相同的结果。
大家好,我的 google 驱动器中有多个文件,我需要获取文件 ID 才能与他人共享下载链接。但我似乎一次只能获得 1 个文件 ID。有没有办法提取所有文件 ID 并将它们与列表匹配?
在我的名单A,B C
每个字母代表一个订单号我试图保持简单但 A 实际上是一个订单号 3472834,B=3293881,C=,3498249。
在google驱动器示例中:File1,File2,File3
我的 google 驱动器中的文件是订单的 pdf 打印输出。它们实际上被命名为订单号 File 1= 3472834, File 2= 3293881, File 3 =3498249
所以我的目标是遍历每个 ListIDS 并获得相应的 Google 文件 ID。但我似乎无法做到,但每次第一个 google 文件 ID。
代码:
ListIDS= ['A','B','C']
for eachId in ListIDS:
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
filename= f'{ListID}'
query = "name contains " + "'"+ filename +"' and trashed = false"
response = service.files().list(q=query, fields= 'files(id,name)').execute()
files = response.get('files')
if files:
print("File Found!")
google_file_name= files[0].get('name')
google_file_id = files[0].get('id')
print (google_file_id)
print(google_file_name)
else:
print("FileNot Found")
FileURL= "https://drive.google.com/file/d/"+ google_file_id + "/view?usp=sharing"
但同样的问题是,例如,我只得到所有 3 个列表 id 的第二个值 B
output:
https://drive.google.com/file/d/FileB_ID_Path/view?usp=sharing
但我的预期结果是:
https://drive.google.com/file/d/FileA_ID_Path/view?usp=sharing
https://drive.google.com/file/d/FileB_ID_Path/view?usp=sharing
https://drive.google.com/file/d/FileC_ID_Path/view?usp=sharing
请帮忙。
我相信你的目标如下。
- 您的文件名类似于
ListIDS= ['A','B','C']
。这些文件名的文件放在您的 Google 驱动器中。 - 您想使用文件名检索文件的文件 ID。
- 您想使用 googleapis 实现此目的 python。
这样的话,下面的修改怎么样?
模式一:
在此模式中,使用 ListIDS= ['A','B','C']
,使用一个搜索查询。
ListIDS = ['A','B','C'] # filenames
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
qFiles = ["name contains " + "'" + e + "'" for e in ListIDS]
query = "(" + " or ".join(qFiles) + ") and trashed = false"
response = service.files().list(q=query, fields='files(id,name)').execute()
files = response.get('files')
values = {}
for e in files:
for f in ListIDS:
if f in e.get('name'):
id = e.get('id')
v = "https://drive.google.com/file/d/" + id + "/view?usp=sharing"
if values.get(f):
values[f].append(v)
else:
values[f] = [v]
print(values)
当此脚本为运行时,返回以下JSON对象。
{ 'A': ["https://drive.google.com/file/d/###/view?usp=sharing"], 'B': ["https://drive.google.com/file/d/###/view?usp=sharing"], 'C': ["https://drive.google.com/file/d/###/view?usp=sharing", "https://drive.google.com/file/d/###/view?usp=sharing"] }
从您的显示脚本中,
name contains '###'
被用作搜索查询。因此,当有多个文件由一个文件名返回时,这些文件 ID 将放入数组中。
模式二:
如果ListIDS
很大,上述模式可能无法使用。因此,当模式 1 无法使用时,请使用模式 2。在此模式中,使用 ListIDS= ['A','B','C']
,使用多个搜索查询。
ListIDS = ['A','B','C'] # filenames
service = create_service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
files = []
for filename in ListIDS:
query = "name contains " + "'" + filename + "' and trashed = false"
response = service.files().list(q=query, fields='files(id,name)').execute()
files.extend(response.get('files'))
values = {}
for e in files:
for f in ListIDS:
if f in e.get('name'):
id = e.get('id')
v = "https://drive.google.com/file/d/" + id + "/view?usp=sharing"
if values.get(f):
values[f].append(v)
else:
values[f] = [v]
print(values)
- 在这种情况下,得到与上述相同的结果。