Bot

ユーザーが投稿したファイルのファイル名を取得(フリープラン)

yuki_

2023.06.20既読 548

こんにちは。
フリープランのLine Worksを利用しています。Botメンバーを含んだトークで、ユーザーがファイルをアップした際に、そのファイルのファイル名を取得する方法はありますでしょうか?
Message EventでfileIdは取得できるので、ファイル自体は利用できるのですがファイル名(拡張子含めて)が分からないです。
LINE WORKS Developers
ドキュメントを見ると、スタンダードプラン以上ではFileスコープにアクセス出来るようなので、ここで分かるのでしょうか?
フリープランしか利用していないので教えて頂けると大変助かります。
LINE WORKS Developers

コメント2

  • 업데이트 된 답글입니다.

    saito makoto

    Bot とのトークルームで送信したファイルのファイル名が知りたいということですよね?
    取得した fileId でダウンロードを行えばわかるのではないでしょうか?
    https://developers.worksmobile.com/jp/docs/bot-attachment-get

    ダウンロードせずにファイル名を知りたいということであればちょっと思い当たりませんね。。。

    file scope は Drive API でマイドライブ、共有ドライブ、組織/グループフォルダを管理するためのものなので、トークルーム内のファイルは確認できなさそうです。
    https://developers.worksmobile.com/jp/docs/drive

    2023.06.30

    0
  • 업데이트 된 답글입니다.

    yuki_ 投稿者

    saito makotoさん、
    コメントありがとうございました。なんとか解決しました。

    PowerShellで書いているのですが、Invoke-RestMethodで-MaximumRedirection 0で自動リダイレクトせずにリダイレクトURLを取得して、そっからファイル名を抜き出し保存するパスを生成して、もう一度Invoke-WebRequestを叩くことで期待どおりの動作となりました。
    PowerShell初めて使うので、ちょっと苦労しました。。。もっと簡単な方法があるかもしれません。

    ↓色々ほしょってますがコードです。
       $url_file = "https://www.worksapis.com/v1.0/bots/$urlEncodedBotId/attachments/$urlEncodedFileId";
       try {
           Invoke-RestMethod -Uri $url_file -Headers $Header -MaximumRedirection 0 -ErrorAction Stop
       } catch {
           #ダウンロード用URL取得
           $Location_file = $_.Exception.Response.Headers.Location

           #ファイル名を取得する(リダイレクトURLの最後が/download.apiとなっているので除去)
           $FileName_file = $Location_file
           $FileName_file = Split-Path $FileName_file -Parent
           $FileName_file = [System.IO.Path]::GetFileName($FileName_file)

           #ファイルパス+ファイル名
           $FilePathName_file = $filePath + $FileName_file
       }

       Invoke-WebRequest -Uri $Location_file -Headers $Header -OutFile $FilePathName_file

    file scopeは全く別物ですね。こちらも情報ありがとうございました。

    2023.07.03

    0
前の投稿 GASでユーザー登録APIを連携するが、エラーとなる。
次の投稿スケジュールの予約に関して
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。