Mein Ziel ist es, eine Liste aller Artikel & Ordner in jedem Google Drive zu haben. Ich beginne damit, sicherzustellen, dass das Skript selbstständig funktioniert. Ich habe Cover-to-Cover der Drive REST API Dokumentation gelesen, und fand schließlich diesen Code, der auch here gefunden werden kann.Wie man nextPageToken mit dem Python-Schnellstart von Google Drive umläuft
from __future__ import print_function
import httplib2
import os
import sys
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
reload(sys)
sys.setdefaultencoding('utf-8')
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/drive-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'Drive API Python Quickstart'
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if the stored credentials are invalid,
the OAuth2 flow is completed to obtain the new credentials.
Returns:
Credentials, the obtained credential.
"""
home_dir = os.path.expanduser('~')
credential_dir = os.path.join(home_dir, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
'drive-python-quickstart.json')
store = Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Needed only for compatibility with Python 2.6
credentials = tools.run(flow, store)
print('Storing credentials to ' + credential_path)
return credentials
def main():
"""Shows basic usage of the Google Drive API.
Creates a Google Drive API service object and outputs the names and IDs
for up to 10 files.
"""
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)
results = service.files().list(
pageSize=1000,fields="nextPageToken, files(mimeType, name)").execute()
items = results.get('files', [])
if not items:
print('No files found.')
else:
print('Files:')
for item in items:
print('{0} ({1})'.format(item['name'], item['mimeType']))
if __name__ == '__main__':
main()
Mein Problem ist, mit dem nextPageToken
und wie richtig es zu benutzen. Die maximale PageSize
ist 1000, also muss ich die nextPageToken
Schleife durchlaufen, holen Sie es aus dem resultierenden JSON, setzen Sie es zurück in die ursprüngliche Schleife (Zeile 66?), Um weitere 1000 Ergebnisse zu erhalten. Wie mache ich das?
Ja! Das ist genau richtig. Vielen Dank. Woran ich Probleme habe, ist die Implementierung dieses 'nextPageToken' in das Skript. – tbw875