第76話タイトル:【完全図解】コピペで完成!LINE×Difyで作る「全自動・経費仕分けボット」の作り方

モダンなフラットイラストスタイルのアイキャッチ画像。明るく鮮やかな背景。中央には、大きなボールド体で「コピペでOK!」という日本語テキストがあり、その下に「LINE×Dify 経理ボットの作り方」というサブタイトルがある。テキストの上にはDifyのAIアイコンがあり、そこから左のスマートフォンと右のGoogle Sheetsアイコンへと光る線が伸びている。スマートフォンにはLINEのトーク画面が表示されており、「昨日、コーナンで洗剤を個人のクレカで1500円買ったよ」といったメッセージが見える。Google Sheetsアイコンの下には、きれいにカテゴリ分けされたデータテーブルがあり、日付、科目、摘要、金額の列に見出しがあり、サンプルデータ(「消耗品費」「クレジットカード」「コーナン」「1500」など)が入力されている。デザイン全体が、自動化の簡単さと迅速さを強調している。 AI活用

こんにちは!「中年からのAI再スタート」のYasuです。

前回(第75話)は、私がAI経理ボットを作る過程で、エラーの嵐に巻き込まれながらも泥臭く完成させるまでのドキュメンタリーをお届けしました(笑)。

「うわぁ、難しそう…」と思った方、安心してください! 今回は、**私がハマった数々の落とし穴をすべて塞いだ、読者専用の『絶対に失敗しない最短ルート』**を公開します。

この記事の通りにコピペして進めるだけで、あなたのLINEが「超優秀な経理アシスタント」に生まれ変わります。さっそく作っていきましょう!


準備するもの(すべて無料!)

  • スマホ(普段使っているLINEアプリ)
  • Googleアカウント(スプレッドシート、GASを使います)
  • Difyアカウント(AIの脳みそ)

ステップ1:Difyで「AI経理担当」を雇う(脳みそ作り)

まずはDifyで、LINEから届いたメッセージを完璧に仕分けるための「思考回路」を作ります。

  1. Difyのダッシュボードから**「最初から作成」>「ワークフロー」**を選びます。
  2. 【開始ノード】
    • 「+ 入力フィールド」から「テキスト」を追加します。
    • 変数名を line_message と入力します。(※一字一句間違えないように注意!)
  3. 【LLMノード】
    • 開始ノードの隣に「LLM」を追加し、お好みのAIモデル(gpt-4o-miniなど)を選びます。
    • システムプロンプト(指示書)に、以下の文章をまるごとコピペしてください。

▼ コピペ用:Difyシステムプロンプト あなたは優秀な経理アシスタントです。ユーザーのメモから、以下の6項目を抽出してください。

  1. 取引日(今日の日付は「2026/03/06」として計算してください)
  2. 科目(消耗品費、旅費交通費など最適なもの)
  3. 取引手段
  4. 摘要(買ったものの具体名)
  5. 取引先(お店の名前)
  6. 金額(数字のみ)

■「取引手段」の厳格ルール 以下のリストから「一字一句違わず」選んでください。個人の財布や個人のクレカを使った場合は、必ず「(個人用)」や「事業主借」を選んでください。 【リスト】現金、現金(個人用)、普通預金、普通預金(個人用)、クレジットカード、クレジットカード(個人用)、事業主借

【超重要】出力は必ず、以下の形式のJSONデータのみを返してください。余計な挨拶は一切不要です。 {“date”: “取引日”, “category”: “科目”, “method”: “取引手段”, “description”: “摘要”, “payee”: “取引先”, “amount”: “金額”}

【ユーザーからのLINEメッセージ】 {{line_message}} ←※ここに開始ノードの変数を差し込んでください!

  1. 【終了ノード】
    • LLMの隣に「終了」を追加します。
    • 出力変数の名前を result とし、値に「LLMの出力テキスト」を選びます。

完成したら右上の**「公開する」を押し、API画面から「APIキー」**を発行してコピーしておいてください。


ステップ2:スプレッドシートの準備(ノート作り)

次に、仕分けられたデータが書き込まれる「ノート」を作ります。

  1. 新しいGoogleスプレッドシートを作成します。(ファイル名は「経費帳簿」などでOK)
  2. 1行目の見出しに、A列から順に以下の6つを入力します。
    • A1:取引日
    • B1:科目
    • C1:取引手段
    • D1:摘要
    • E1:取引先
    • F1:金額

準備はこれだけです!


ステップ3:GASに「魔法のコード」をコピペする

いよいよ、LINEとDifyとスプレッドシートを繋ぐ伝書鳩(GAS)を設定します。 ここには、**私がエラーと格闘して生み出した「完全エラー対策済みの最強コード」**を用意しました!

  1. スプレッドシートの上のメニューから、**「拡張機能」「Apps Script」**をクリックします。
  2. 最初から書かれているコードをすべて消して、以下のコードをまるごとコピペしてください。

▼ コピペ用:完全対策版GASコード

JavaScript

function doPost(e) {
  try { 
    const lineJson = JSON.parse(e.postData.contents);
    const userMessage = lineJson.events[0].message.text; 
    
    const difyApiKey = 'ここにあなたのDifyのAPIキーを貼り付ける'; // ★ここを書き換える!
    const difyUrl = 'https://api.dify.ai/v1/workflows/run';
    
    const payload = {
      "inputs": {
        "line_message": userMessage
      },
      "response_mode": "blocking",
      "user": "line_user"
    };
    
    const options = {
      "method": "post",
      "headers": {
        "Authorization": "Bearer " + difyApiKey,
        "Content-Type": "application/json"
      },
      "payload": JSON.stringify(payload)
    };
    
    const response = UrlFetchApp.fetch(difyUrl, options);
    const resultJson = JSON.parse(response.getContentText());
    
    let aiDataText = resultJson.data.outputs.result;
    aiDataText = aiDataText.replace(/```json/g, "").replace(/```/g, "").trim();
    
    const aiData = JSON.parse(aiDataText);
    
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([
      aiData.date, 
      aiData.category, 
      aiData.method, 
      aiData.description, 
      aiData.payee, 
      aiData.amount
    ]);
    
    return ContentService.createTextOutput("Success");
    
  } catch (error) {
    // もしエラーが起きても、スプレッドシートに原因を書き出してくれます!
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([new Date(), "エラー発生!", error.message, error.stack]);
    return ContentService.createTextOutput("Error");
  }
}

// 許可を強制的に出すためのダミー関数(テスト用)
function testAuth() {
  UrlFetchApp.fetch("https://google.com");
}

【重要】 コードの6行目にある 'ここにあなたのDifyのAPIキーを貼り付ける' の部分を、ステップ1でコピーしたDifyの鍵に書き換えてください。(前後の ' は消さないように!) 書き換えたら、上の「フロッピーディスクのマーク(保存)」を押します。


ステップ4:最大の罠!「通信許可(パスポート)」を安全に突破する

ここが初心者が一番つまずくポイントです。GASが外部(Dify)と通信するための「許可」をGoogleに出してもらう必要があります。

⚠️注意:ここで絶対に「実行」ボタンをそのまま押さないでください!エラーになります。

以下の「裏技手順」で安全に許可を出しましょう。

  1. 画面上部の「実行」ボタンのすぐ右にある「doPost」という文字をクリックし、testAuth に変更します。
  2. その状態で、**「実行」**ボタンを押します。
  3. 「承認が必要です」という画面が出るので、「権限を確認」→「自分のアカウント」を選択。
  4. 「Googleはこのアプリを検証していません」という警告が出たら、**「詳細」をクリックし、一番下の「〇〇(安全ではないページ)に移動」**をクリック。
  5. 右下の**「許可」**をクリックします。

これでパスポート発行完了です!

🔗 公開してURLをゲットする

  1. 画面右上の青いボタン**「デプロイ」「新しいデプロイ」**をクリック。
  2. 歯車マークから**「ウェブアプリ」**を選択。
  3. アクセスできるユーザーを、必ず**「全員」**に変更して「デプロイ」をクリック。
  4. 表示された**「ウェブアプリのURL」をコピー**します。

ステップ5:LINEと繋ぐ(開通作業)

最後の仕上げです!

  1. LINE Developers にログインし、プロバイダーとチャネル(Messaging API)を作成します。
  2. ボットの「Messaging API設定」タブを開き、中段にある**「Webhook設定」**の「編集」を押して、さきほどコピーしたGASのURLを貼り付けます。
  3. そのすぐ下にある**「Webhookの利用」のスイッチを必ず「オン(緑色)」**にします。

これで全工程が完了です!!!お疲れ様でした!


いざテスト送信!

スマホでQRコードを読み込んでボットを友だち追加し、トーク画面からこんな風に送ってみてください。

「昨日、コーナンで洗剤を個人のクレカで1500円買ったよ」

送信後、パソコンでスプレッドシートを開いてみてください。 見事に6つの項目に仕分けられて、自動で入力されていれば大成功です!!🎉

これでもう、年末の確定申告に怯える必要がなくるといいです。実際に試して

本当に使えるようだったら最高に嬉しいです!

現場の合間にLINEでつぶやくだけで、最強の経理アシスタントが勝手に帳簿を作ってくれます。こんな感じで日々の作業を時短できるアプリをもっと作りたいです!

コメント

タイトルとURLをコピーしました