Google Drive APIとPythonで検索条件に合致するファイルにスターを付ける。

 表題の件について成功したので端的に紹介する。Google Drive APIに関しては日本語の情報が少ないので少しでも参考になればと思う。以下本題である。

 以下のコードでは検索条件(q)に合致するファイルにスターを付ける。

def star(q):
    service = build('drive', 'v3', credentials=creds)

    # クエリは文字列で表記する。
    response = service.files().list(q=q,
                                    spaces='drive',
                                    fields='nextPageToken, files(id)').execute()
    for i in response.get('files', []):
        file_id = i.get('id')

        # APIからファイルを取得する。
        file = service.files().get(fileId=file_id, fields='starred').execute()

        # 新しいメタデータを作成する。
        file['starred'] = True

        # APIにリクエストを送信する。
        updated_file = service.files().update(fileId=file_id, body=file,).execute()

 fieldsに何も指定しない場合、getはデフォルトでkindを受け取るが、kindは書き込み可能なフィールドではない*1。書き込み可能でないフィールドがあるとupdateでエラーになるので、提示したソースコードのように必要なフィールドだけを指定すること。筆者はこれに気付かずに一日中頭を抱えていたので同じ罠にはまらないように。