LINE WORKS API を使用して Bot で受信したファイルをダウンロードする
この記事では、LINE WORKS API を使用して Bot で受信したファイルをダウンロードする方法を説明します。
以下の URL で Google Colab を使って簡単に試せます。
Google Colab で試す
必要な準備
-
LINE WORKS Developer Console での設定
- Bot を作成し、
Bot ID
を取得します。
- Bot を作成し、
-
Access Token の発行
- LINE WORKS API を使用するためのアクセストークンを取得します。
-
添付ファイルの
fileId
を取得- 対象のファイル ID を確認します。
使用するスクリプト
以下のスクリプトは、LINE WORKS API を使用してBot で受信したファイルをダウンロードする方法を示しています。
import requests
import re
# 必要な変数を設定
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN" # @param {type:"string"}
BOT_ID = 2000001 # @param {type:"integer"}
FILE_ID = "jp1.1733205053418691464.1733291453.1.3725434.0.0.0" # @param {type:"string"}
DEFAULT_DOWNLOAD_PATH = "downloaded_file" # ファイル名が取得できなかった場合のデフォルト保存先
# API エンドポイント
DOWNLOAD_URL = f"https://www.worksapis.com/v1.0/bots/{BOT_ID}/attachments/{FILE_ID}"
# ヘッダー
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
}
# ステップ 1: ダウンロード URL の取得
response = requests.get(DOWNLOAD_URL, headers=headers, allow_redirects=False)
if response.status_code == 302:
# HTTP Location ヘッダーから実際のダウンロード URL を取得
download_location_url = response.headers.get("Location")
print(f"ダウンロード URL が取得されました: {download_location_url}")
else:
print(f"ダウンロード URL の取得に失敗しました: {response.status_code}")
print("レスポンス内容:", response.text)
raise Exception("ダウンロード URL の取得に失敗しました。")
# ステップ 2: ファイルのダウンロード
download_response = requests.get(download_location_url, headers=headers, stream=True)
if download_response.status_code == 200:
# ファイル名を `Content-Disposition` ヘッダーから取得
content_disposition = download_response.headers.get("Content-Disposition", "")
file_name_match = re.search(r'filename="?([^"]+)"?', content_disposition)
if file_name_match:
file_name = file_name_match.group(1)
else:
file_name = DEFAULT_DOWNLOAD_PATH # ヘッダーにファイル名がない場合のデフォルト名
# ファイルを保存
with open(file_name, "wb") as file:
for chunk in download_response.iter_content(chunk_size=8192):
file.write(chunk)
print(f"ファイルが正常にダウンロードされました: {file_name}")
else:
print(f"ファイルのダウンロードに失敗しました: {download_response.status_code}")
print("レスポンス内容:", download_response.text)
raise Exception("ファイルのダウンロードに失敗しました。")
スクリプトのポイント
必要なパラメータ
-
ACCESS_TOKEN
- LINE WORKS API の認証に使用されるアクセストークンです。
-
BOT_ID
- 使用する Bot の ID です。
- LINE WORKS Developer Console から取得できます。
-
FILE_ID
- ダウンロード対象のファイル ID です。
ファイル名の取得と保存
- スクリプトは
Content-Disposition
ヘッダーからファイル名を抽出します。 - 抽出できない場合は、デフォルト名(
downloaded_file
)で保存します。
実行結果
-
成功時:
ダウンロード URL が取得されました: https://apis-storage.worksmobile.com/... ファイルが正常にダウンロードされました: example.png
-
失敗時:
ファイルのダウンロードに失敗しました: 401 レスポンス内容: { "code":"UNAUTHORIZED", "description":"Authentication failed." }
応用例
- ダウンロードしたファイルを加工・送信する。
- ファイル名を自動生成して保存する。
まとめ
このスクリプトを使用することで、LINE WORKS API を利用したファイルのダウンロードを簡単に実現できます。ぜひお試しください!