ドキュメント本文へスキップ
Ruby

ファイル

`files.list`、`list_all`、`iterate`、`get`、`download`、`list_links`、`list_all_links`、`iterate_links`、`create_link`、`revoke_link`、`stats`、`upload`、`delete`、`delete_many`。

すべてのメソッド

files.rb
page = client.files.list(kind: "pdf", sort: "largest")file = page.items.first links = client.files.list_all_links(file[:id])p links.map { |link| [link[:url], link[:downloads]] } stats = client.files.statsputs stats.dig(:totals, :files), stats.dig(:uploaded, :bytes) File.binwrite(file[:filename], client.files.download(file[:id]))

メールボックスが保持するすべてのファイルで、送受信した添付ファイルとアップロードしたファイルを含みます:アプリの「ファイル」ページに当たります。download はバイト列をバイナリの String として返し、File.binwrite でそのまま保存できます。リンクはファイルが送られたときのダウンロードリンクで、それぞれの取得回数が付きます。stats は「分析」タブに当たります。

list、list_all、iterate は q:、kind:、sort: に加えて、direction:(inbound、outbound、uploaded)、address:(大文字小文字を区別せずに比較する 1 つのアドレスのファイル)、since: と until:(Time、DateTime、または ISO 8601 の String)を受け取ります。since: はその時点を含み、until: はその直前で止まります。Ruby の Date は日付だけの値として送られ、この一覧はそれを UTC の午前 0 時として読みます。

q: はファイル名とその種類を検索します。kind: は image、pdf、audio、video、text のいずれかで、sort: は newest(既定値)、oldest、largest、name のいずれかです。OpenEmail::FILE_KINDS、OpenEmail::FILE_SORTS、OpenEmail::FILE_DIRECTIONS が選択肢を定義しています。list は OpenEmail::Page を 1 つ返し、list_all はすべてのファイルを 1 つの Array で返します。iterate は各ファイルをブロックに yield し、ループが必要とするときにだけ次のページを取得します。ブロックがなければ Enumerator を返します。

読むには files:read、アップロード、削除、リンクの公開と取り消しには files:write が必要で、これは files:read を含みます。ファイルに独自のスコープができる前に作られたキーには、対応するスコープが付与されました。スコープのないキーは 403 insufficient_scope で拒否され、そのエラーでは scope_missing? が true です。特定のアドレスやドメインに限定されたキーは、そこに届いたファイルしか見えないため、ワークスペース全体向けにアップロードされたファイルは見えません。

download はファイル全体をメモリに保持するため、非常に大きなファイルは 1 つずつ取得してください。

アップロードと削除

upload.rb
upload = client.files.upload(File.binread("report.pdf"), filename: "report.pdf", content_type: "application/pdf")client.files.delete(upload[:id]) if upload[:deletable] invoice = client.files.upload(Pathname("invoice.pdf"))puts invoice[:filename], invoice[:mimeType] result = client.files.delete_many(["file_0c4e7a91d2b84f63a5e19b7d", "file_6bb640f5b99e47deb758f1f5"])result[:kept].each { |kept| puts "#{kept[:filename]} #{kept[:reason]}" }

upload はバイト列をそのまま、100 MB まで、filename: の名前で保存し、ファイルを返します。送信時は emails.send の attachments に {fileId: upload[:id]} として添付します。content_type: を渡すか、自身の種類を持つバイト列を渡してください。それ以外は application/octet-stream として保存されます。2 回目の試行は 2 つ目のコピーを保存してしまうため、リトライは一切されません。

バイト列はバイナリの String、IO、Pathname のいずれかです。Pathname や File にはどちらのキーワード引数も不要です:名前はファイル自身のもので、種類は gem が知っている拡張子(.pdf や .png など)から取られます。Rails のアップロードは自身の original_filename と content_type を持っています。素のバイト列には名前がないため、filename: のない String や StringIO は、何かが送信される前に ArgumentError を送出します。

アップロードは 600 秒、またはクライアントの timeout がそれより長ければその時間まで実行でき、timeout: で 1 回の呼び出しに別の上限を設定できます。timeout: 0 で作ったクライアントは、アップロードにかかるだけ待ちます。

削除できるのは何も依存していないアップロード済みファイルだけで、各ファイルの deletable と usage がそれを事前に示します。delete はそれ以外のファイルを 409 file_in_use で拒否し、OpenEmail::ConflictError として送出されます。delete_many は最大 100 件の id を受け取り、削除できるものを削除し、残りを kept(それぞれ理由付き)と missing で報告します。どちらもリトライされません。応答が失われた後の 2 回目の delete で 404 が返れば 1 回目が成功したことを意味し、2 回目の delete_many はそれらのファイルを missing で報告します。