見出し画像

音声データの録音・保存には GAS で作った LINE bot が便利かもしれない

音声データの録音・保存には GAS (Google Apps Script) で作った LINE bot がけっこう便利です。

そのまま何かの処理につなげることも可能ですし、ファイルは Google ドライブに保存されるため、PC への共有もすぐにできます。

LINE では音声ファイルは M4A 形式で保存されるようです。GAS で直接変換を行うことはできません。Python によるローカル環境での変換は以下を参照してください。

作成手順

事前に、LINE Messaging API チャンネルの作成とアクセストークンの取得を行ってください。作成手順は以下の通りです。

1. 音声データを保存するフォルダを作成。フォルダ ID を確認しておく。

2. 新たな GAS プロジェクトを作成。

3. プロジェクトの設定で、LINE Messaging API のアクセストークンをスクリプト プロパティとして定義。プロパティ名は「Line_key」とします。

4. スクリプトのコードを作成。

function doPost(e) {
  try {
    const event = JSON.parse(e.postData.contents).events[0];

    switch(event.message.type) {
      case 'audio': // リクエストが音声の場合
        getAudioContent(event.message.id);
        sendLineMessage(event.replyToken, '音声データを保存しました。');
        break;
      default: // リクエストがサポート外のデータ形式の場合
        sendLineMessage(event.replyToken, `${event.message.type}はサポート外のデータ形式です`);
        break;
    }
  } catch {
    // エラー発生時
    sendLineMessage(event.replyToken, '不明なエラーが発生しました');
  }
}

// LINE メッセージを送信する関数
function sendLineMessage(replyToken, replyMessage) {
  const linePayload = {
    'method': 'post',
    'headers': {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${PropertiesService.getScriptProperties().getProperty('Line_key')}`,
    },
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': replyMessage,
      }],
    }),
  };

  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', linePayload);
}

function getAudioContent(id) {
  const response = UrlFetchApp.fetch('https://api-data.line.me/v2/bot/message/' + id + '/content',{
    'headers': {
      'Authorization': `Bearer ${PropertiesService.getScriptProperties().getProperty('Line_key')}`,
    },
    'method': 'get'
  });

  const folder = DriveApp.getFolderById('フォルダ ID'); // フォルダ ID を書き換え
  const file = folder.createFile(response.getBlob());
  file.setName(id + '.m4a');
}

5. プロジェクトをウェブアプリとして公開後、URL を LINE Messaging API チャンネルで Webhook として設定。





この記事が気に入ったらサポートをしてみませんか?