Google ドライブ API には、スプレッドシートを作成および更新するためのサンプルがいくつか用意されています。
ただし、異なる csv があり、さらに多くの csv を設計する予定です。私が探しているのは、ブロブストアに保存されている csv の URL を取得し、それらのファイルを Google ドライブに保存する一般的なソリューションです。
Google ドライブ API には、スプレッドシートを作成および更新するためのサンプルがいくつか用意されています。
ただし、異なる csv があり、さらに多くの csv を設計する予定です。私が探しているのは、ブロブストアに保存されている csv の URL を取得し、それらのファイルを Google ドライブに保存する一般的なソリューションです。
私の解決策はこのようなもので、drEditサンプルの助けを借りました:
def get_data(self):
blob_reader = blobstore.BlobReader(self.__blob_key__)
data = blob_reader.read()
fh = io.BytesIO(data)
return fh
def save_file(self, dest_filename, description, mime_type):
service = self.create_drive()
resource = {
'title': dest_filename,
'description': description,
'mimeType': mime_type,
}
try:
file_data = self.get_file_data()
resource = service.files().insert(
body=resource,
media_body=MediaIoBaseUpload(
file_data,
mime_type,
resumable=False)
).execute()
except AccessTokenRefreshError:
pass
save_fileの呼び出し:
drive.save_file('testing_drive', 'testing....', 'text/csv')
また
drive.save_file('testing_drive.csv', 'testing....', 'text/csv')
ただし、このコードには小さな問題が1つあります。GoogleドライブAPIは、アップロード中にこのファイルをスプレッドシートに変換しないため、プレビューは機能しません。ファイルを表示するには、ファイルをGoogleスプレッドシートに変換するスプレッドシートでこのドキュメントを開く必要があります。変換オプションに関するAPIドキュメントを見てきました。ただし、RPC呼び出しを使用しているときにファイルを変換する方法が見つかりませんでした。どうすればこれを達成できるか提案してください。
私が知っている一般的な解決策はありませんが、これを実現するには 4 ~ 5 行の Python が必要です。
DrEdit Pythonサンプルは、App Engine Python からドライブにファイルを保存します。ブロブストアを使用すると、それに簡単に追加できます。