Ejemplo n.º 1
0
def share_folder(cred_path, file_id, share_lst, msg=""):
    dservice = get_drive_service(cred_path)

    def callback(request_id, response, exception):
        if exception:
            # Handle error
            print(exception)
        else:
            print("Permission Id: %s" % response.get('id'))

    def create_permission4writer(share_with):
        permission = {
            'type': 'user',
            'role': 'writer',
            'emailAddress': share_with
        }

        return permission

    if not msg:
        msg = "Please upload the attendance of {} into this folder".format(str(datetime.now().date()))

    batch = dservice.new_batch_http_request(callback=callback)
    for writer in share_lst:
        user_permission = create_permission4writer(writer)
        batch.add(dservice.permissions().create(
            fileId=file_id,
            body=user_permission,
            fields='id',
            emailMessage=msg
        ))

    batch.execute()
Ejemplo n.º 2
0
def uploadFile(cred_path, local_file_name, parent_id, remote_file_name, mimetype="*/*", mimeType="*/*"):
    dservice = get_drive_service(cred_path)

    file_metadata = {
    'name': remote_file_name,
    'mimeType': mimeType,
    "parents": [parent_id]
    }
    media = MediaFileUpload(local_file_name,
                            mimetype=mimetype,
                            resumable=True)
    file = dservice.files().create(body=file_metadata, media_body=media, fields='id').execute()
    return file.get('id')
Ejemplo n.º 3
0
def list_files(cred_path, folder_id):
    dservice = get_drive_service(cred_path)
    all_files = []
    page_token = None
    while True:
        response = dservice.files().list(q="parents in '{}'".format(folder_id),
                                         spaces='drive',
                                         fields='nextPageToken, files(id, name)',
                                         pageToken=page_token).execute()
        for file in response.get('files'):
            # Process change
            all_files.append(file)
        page_token = response.get('nextPageToken', None)
        if page_token is None:
            break

    return all_files
Ejemplo n.º 4
0
def create_new_folder(cred_path, foldername, parent_id=None):
    dservice = get_drive_service(cred_path)
    if parent_id:
        file_metadata = {
            'name': foldername,
            'mimeType': 'application/vnd.google-apps.folder',
            "parents": [parent_id]
        }
    else:
        file_metadata = {
            'name': foldername,
            'mimeType': 'application/vnd.google-apps.folder'
        }
    file = dservice.files().create(body=file_metadata,
                                   fields='id').execute()

    return file
Ejemplo n.º 5
0
def file2lcl_folder(cred_path, file_id, local_folder):
    """
    
    :param cred_path: str. The path to the folder of credentials (either credentials.json or token.pickle)
    :param file_id: str. The id of a file on Google Drive.
    :param local_folder: str. The local folder to save the file
    :return: 
    """
    dservice = get_drive_service(cred_path)
    request = dservice.files().get_media(fileId=file_id["id"])

    destination = "{}/{}".format(local_folder, file_id["name"])
    fh = io.FileIO(destination, mode='w')
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()

    return done