def __authorize__(self): try: authorizer = Auth(Flow.__SCOPES, *Flow.__required_folders) service = authorizer.authorize() self.service = service except Exception as e: print(str(e)) sys.exit(-1)
def grant_permission(file_id, email): authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds')) service = authorizer.authorize() request_body = { 'type': 'user', 'role': 'reader', 'emailAddress': email } results = service.permissions().create(fileId=file_id, body=request_body, fields='emailAddress,id').execute() print(results)
def main(): authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds')) service = authorizer.authorize() # Call the Drive v3 API results = service.files().list( fields="nextPageToken, files(id, name)").execute() items = results.get('files', []) if not items: print('No files found.') else: print('Files:') for item in items: print(u'{0} ({1})'.format(item['name'], item['id']))
def main(): parent_folder = get_folder_id_by_name(get_id_only=False) authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds')) service = authorizer.authorize() with open(os.path.join(os.path.abspath('.'), './student_ids/students.json'), 'r') as students_id_file: # get the student ids student_ids = json.load(students_id_file) folder_prefix = input("Enter folder prefix: ") if folder_prefix != '': lower_limit = input("Are there existing folders? If so, enter the value of suffix to start from: ") if lower_limit != '': create_nested_folder_structure(service, parent_folder, folder_prefix, student_ids, folder_suffix_lower_limit=int(lower_limit)) else: create_nested_folder_structure(service, parent_folder, folder_prefix, student_ids) else: create_student_folders(service, student_ids, parent_folder)
def get_folder_id_by_name(get_id_only=False): # get authorization if not authorized authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds')) service = authorizer.authorize() folder_name = input("Please enter the folder name to search for: ") response = service.files().list(q=f"mimeType='application/vnd.google-apps.folder' and name='{folder_name}'", spaces='drive', fields='nextPageToken, files(id, name)').execute() items = response.get('files', []) if not items: print('No files found.') return None else: item = items[0] if get_id_only: folder_id = f"'{item['id']}'" return folder_id else: return item
def get_child_folders(): """ This is a function that takes the name of the folder as input, and then finds the subfolders under that folder """ authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds')) service = authorizer.authorize() folder_id = get_folder_id_by_name(get_id_only=True) if folder_id: print(folder_id) child_folders = service.files().list( q= f"mimeType='application/vnd.google-apps.folder' and {folder_id} in parents", fields='nextPageToken, files(id, name)').execute() pprint(child_folders) return child_folders return None
def main(): """ This script deals with creating a nested folder structure Parent Folder |_ <Prefix> #1 |_ Student ID #1 |_ Student ID #2 |_ Student ID #3 |_ ... |_ <Prefix> #2 |_ Student ID #1 |_ Student ID #2 |_ Student ID #3 |_ ... |_ ... if prefix is not specified, it will create a folder structure like this Parent Folder |_ Student ID #1 |_ Student ID #2 |_ Student ID #3 |_ ... """ # potential issue if the user doesn't have these folders create_necessary_folders([ os.path.join(os.path.abspath('.'), 'credentials'), os.path.join(os.path.abspath('.'), 'pickled_creds') ]) # get authorization if not authorized authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), 'credentials'), os.path.join(os.path.abspath('.'), 'pickled_creds')) service = authorizer.authorize() parent_folder_name = input("Enter parent folder name: ") # creates one folder with the given name parent_metadata = { 'name': parent_folder_name, 'mimeType': 'application/vnd.google-apps.folder' } parent_folder = service.files().create(body=parent_metadata, fields='id').execute() print( f"Parent folder {parent_folder_name} created with id={parent_folder.get('id')}" ) # read json file, where student ids are stored in an array form try: with open( os.path.join(os.path.abspath('.'), 'student_ids/students.json'), 'r') as students_id_file: # get the student ids student_ids = json.load(students_id_file) folder_prefix = input("Enter folder prefix: ") if folder_prefix != '': create_nested_folder_structure(service, parent_folder, folder_prefix, student_ids) else: create_student_folders(service, student_ids, parent_folder) except FileNotFoundError: print( "Please prepare a students.json file under the student_ids folder." )