デジタルと仕事
PR

【完全無料】名刺管理の決定版!最新AI(Gemini)で「画像保存して寝るだけ」の全自動システムを自作しよう

oyajinoryugi
記事内に商品プロモーションを含む場合があります

「名刺管理アプリ、便利だけど毎月の課金がなぁ…」

「机の上に名刺が山積み。でも入力するのは面倒くさい…」

そんな悩み、今日で終わりにしましょう。

実は、Googleが提供している無料ツールを組み合わせるだけで、有料アプリ顔負けの「最強の名刺管理システム」が自分で作れるんです。

  • 完全無料(GoogleアカウントがあればOK)
  • スマホで撮るだけで自動データ化
  • 最新AIが「会社名」「氏名」を完璧に仕分け
  • ファイル名も自動でリネームして整理整頓
  • 5分ごとに自動巡回(エラー知らずの安定設計!)

「プログラミングなんて未経験」という方でも大丈夫。この記事の通りにコピペするだけで完成するように、最新の手順を超丁寧に解説します。

そもそも、何を使うの?(3つの魔法のツール)

今回は、Googleの3つの無料サービスを使います。

  1. Googleドライブ & スプレッドシート名刺の「画像」と「データ」を保存しておく「箱」と「台帳」です。
  2. Google Apps Script(ガス / GAS)今回の主役。箱に入った名刺画像を読み取って、台帳に書き写してくれる「自動ロボット」です。
  3. AppSheet(アップシート)台帳のデータを、スマホで見やすい「アプリ」に変身させてくれるツールです。

これらを組み合わせて、「写真を撮る(ドライブ)→ ロボットが整理(GAS)→ アプリで見る(AppSheet)」という最強の流れを作ります。

ステップ1:Googleドライブに「箱」を作る

まずは、名刺画像を保存するフォルダを作ります。

  1. Googleドライブを開きます。
  2. 「新規」→「新しいフォルダ」で、以下の2つのフォルダを作ってください。
    • 01_未処理 (これから読み取る名刺を入れる場所)
    • 02_保存済 (読み終わった名刺が移動する場所)
  3. 【超重要】フォルダの「ID」をメモする
    • 作った01_未処理フォルダをダブルクリックして開きます。
    • 画面上のURL(アドレスバー)を見てください。
    • drive.google.com/drive/folders/ の後ろにある**「英数字の羅列」**がフォルダのIDです。
    • これをコピーして、メモ帳などに貼り付けておいてください。
    • 同じように02_保存済のIDもメモします。

メモするもの:

  • 未処理フォルダID: 1A-bcDeFgHiJkLmNoP... みたいな文字列
  • 保存済フォルダID: 2X-yz1234567890... みたいな文字列

ステップ2:スプレッドシートで「台帳」を作る

次に、データを書き込む表を作ります。

  1. Googleスプレッドシートを新規作成します。
  2. ファイル名を「名刺管理台帳」にします。
  3. 1行目(A1〜J1)に、以下の文字を正確に入力してください。(コピペ推奨)
ABCDEFGHIJ
会社名氏名役職携帯電話番号会社電話番号メール種類画像リンク登録日キー

これで台帳は完成です。

ステップ3:AIの「合鍵(APIキー)」を手に入れる

名刺の文字を読み取るために、Googleの最新AI「Gemini(ジェミニ)」を使います。これを使うための鍵(APIキー)を無料で発行します。

  1. Google AI Studio にアクセスします。
  2. Googleアカウントでログインし、「Get API key」というボタンをクリックします。
  3. 「Create API key」を押し、表示された長い文字列(キー)をコピーして、さっきのメモ帳に保存します。

ステップ4:自動化ロボット(GAS)を設置する

ここが最大の山場ですが、コピペと設定だけなので安心してください!

4-1. コードを貼り付ける

  1. スプレッドシートに戻り、メニューの「拡張機能」→「Apps Script」をクリックします。
  2. コードを書く画面が開くので、最初から書いてある文字を全て消して空っぽにします。
  3. 以下のコードを丸ごとコピーして貼り付けてください。

★ここが「完全版」のポイント!

  • エラー回避: 最新AIの厳しい制限に引っかからないよう、「1回の実行につき1枚だけ」確実に処理します。
  • 自動整理: 処理が終わった画像のファイル名を「会社名_氏名.jpg」に勝手に書き換えます。これでGoogleドライブの中身もスッキリ!
  • 手動ボタン: 基本は全自動ですが、今すぐ試したい時用の「手動実行ボタン」もメニューに追加されます。
/**
 * AI名刺管理システム(完全版:自動リネーム&手動ボタン付き)
 * ・トリガーで「5分おき」に実行し、名刺を1枚ずつ着実に処理します。
 * ・処理後のファイル名を「会社名_氏名」に自動変更し、ドライブ内を整理します。
 */

function ocrWithAI() {

  /* ========= 設定エリア(ここを書き換える!) ========= */
  const apiKey = "★ここにAPIキーを貼る★";
  const folderIdUnprocessed = "★ここに01_未処理のIDを貼る★";
  const folderIdProcessed   = "★ここに02_保存済のIDを貼る★";
  const sheetName = "シート1";
  /* ================================================= */

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(sheetName);
  const folderUnprocessed = DriveApp.getFolderById(folderIdUnprocessed);
  const folderProcessed = DriveApp.getFolderById(folderIdProcessed);

  // 1. 未処理ファイルがあるか確認
  const files = folderUnprocessed.getFiles();
  if (!files.hasNext()) {
    console.log("未処理ファイルなし(正常終了)");
    return; // ファイルがなければ何もしないで終了(0.1秒で終わります)
  }

  // 2. 1つだけファイルを取り出す
  const file = files.next();
  console.log("処理開始:" + file.getName());

  try {
    /* ===== ① OCR(画像から文字を読む) ===== */
    const resource = {
      name: file.getName(),
      mimeType: "application/vnd.google-apps.document"
    };

    // Drive APIを使ってドキュメント作成
    const tempDoc = Drive.Files.create(resource, file.getBlob());
    Utilities.sleep(5000); // 変換待ち(5秒)

    const doc = DocumentApp.openById(tempDoc.id);
    const text = doc.getBody().getText();
    Drive.Files.remove(tempDoc.id); // 一時ファイル削除

    /* ===== ② AI(Gemini)で情報整理 ===== */
    const prompt = `
    以下は名刺のOCRテキストです。情報を抽出し、必ずJSONのみで返してください。
    【条件】
    ・携帯電話と会社電話を区別すること
    ・不要な挨拶・記号は除外すること
    ・不明な項目は空文字にすること
    {
      "会社名": "", "氏名": "", "役職": "",
      "携帯電話番号": "", "会社電話番号": "", "メールアドレス": ""
    }
    【テキスト】
    ${text}
    `;

    // 最新のGemini 2.5 Flashモデルを使用
    const url = `https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
    const payload = { contents: [{ parts: [{ text: prompt }] }] };

    const response = UrlFetchApp.fetch(url, {
      method: "post",
      contentType: "application/json",
      payload: JSON.stringify(payload),
      muteHttpExceptions: true // エラーでも止まらないようにする
    });

    if (response.getResponseCode() !== 200) {
      console.log("Geminiエラー:" + response.getContentText());
      return; // AIが混んでいたら今回は諦める(次回またトライします)
    }

    // AIの返事をきれいにする
    let aiText = JSON.parse(response.getContentText()).candidates[0].content.parts[0].text;
    aiText = aiText.replace(/```json/g, "").replace(/```/g, "").trim();
    const result = JSON.parse(aiText);

    /* ===== ③ 重複チェックと書き込み ===== */
    const key = (result.会社名 || "不明") + "_" + (result.氏名 || "不明");
    const data = sheet.getDataRange().getValues();
    const isDuplicate = data.some(row => row[9] === key);

    if (!isDuplicate) {
      sheet.appendRow([
        result.会社名 || "不明",
        result.氏名 || "不明",
        result.役職 || "",
        result.携帯電話番号 || "",
        result.会社電話番号 || "",
        result.メールアドレス || "",
        "未分類",
        file.getUrl(),
        new Date(),
        key
      ]);
      
      // ★超便利機能:ファイル名を「会社名_氏名」に書き換える
      file.setName(key); 
      
    } else {
      console.log("重複のため登録スキップ");
      file.setName("【重複】" + key); // 重複していたら分かりやすく名前を変える
    }

    /* ===== ④ フォルダ移動 ===== */
    file.moveTo(folderProcessed);
    console.log("処理完了:" + file.getName());

  } catch (e) {
    console.log("エラー発生:" + e);
  }
}

// スプレッドシートに「手動実行ボタン」を作る機能
function onOpen() {
  SpreadsheetApp.getUi().createMenu('★名刺システム')
    .addItem('今すぐ1枚読み込む', 'ocrWithAI')
    .addToUi();
}

4-2. 設定を書き換えて保存する

  1. コードの上の方にある ★ここに... の部分を、先ほどメモした「APIキー」「2つのフォルダID」に書き換えてください。
  2. 左側のメニューにある「+(サービス)」をクリックします。
  3. リストから「Drive API」を探してクリックし、下の「追加」を押します。
  4. 画面上の「フロッピーアイコン(保存)」を押します。

4-3. 「5分おき」に自動巡回させる(トリガー設定)

ここが全自動化のキモです!

  1. GASの画面左端にある「時計のアイコン(トリガー)」をクリックします。
  2. 右下の「+ トリガーを追加」ボタンを押します。
  3. 設定画面が出るので、以下のように設定してください。
    • 実行する関数:ocrWithAI
    • イベントのソースを選択:時間主導型
    • 時間ベースのタイマーのタイプ:分ベースのタイマー
    • 時間の間隔:5 分おき
  4. 「保存」を押します。

これでロボットが「5分おきにフォルダを見に行き、名刺があれば1枚処理して帰る」という動きを24時間続けてくれます。

一度に大量に処理しないので、AIのエラー制限にも引っかからず、1時間で12枚、一晩で100枚以上の名刺を確実に処理できます。

ステップ5:スマホアプリ化(AppSheet)

最後に、このデータをスマホで使いやすくします。

  1. スプレッドシートのメニューから「拡張機能」→「AppSheet」→「アプリを作成」をクリック。
  2. これだけで、自動的にアプリが作られます!

使いやすくする設定

  1. プルダウンを作る: 左メニュー「Data」→「Columns」で「種類」を Enum に変更し、Valuesに「顧客」「業者」などを追加。
  2. 編集可能にする: 左メニュー「Data」→「Tables」で「Updates」などに全てチェックを入れる。
  3. キーの設定(重要): 「Data」→「Columns」で、一番右にある「KEY」列で、「キー(J列)」の行だけに青いチェック**が入っている状態にする。

最後に右上の「Save」を押せば完成です!

【応用編】アプリを「リスト形式」にして一覧性をアップ!

デフォルトの見た目だと「1画面に3件」くらいしか表示されませんが、設定を少し変えるだけで、Excelのようにズラッとたくさん表示できるようになります。

  1. AppSheetの編集画面で、左メニューの「UX(スマホのアイコン)」をクリック。
  2. 「Views」タブの「名刺管理台帳」(View名)をクリック。
  3. View typeDeck から Table に変更。
    • これでリスト形式になります!
  4. さらに、その下の Column order で「会社名」「氏名」「携帯電話番号」などを追加すると、見たい項目だけがスッキリ表示されます。

トラブルシューティング(困ったときは?)

Q. エラーが出たらどうする?

赤いエラーが出ても焦る必要はありません。

一番確実なのは、エラーの文章をコピーして、「Gemini(またはChatGPT)」にそのまま貼り付けることです。「このエラーはどういう意味?直して」と聞けば、優秀なAIがすぐに答えを教えてくれます。

Q. すぐに動かしたいときは?

スプレッドシートの画面を再読み込みすると、メニューに「★名刺システム」が出現します。

ここから「今すぐ1枚読み込む」を押せば、5分待たずに処理を実行できます。

まとめ

お疲れ様でした!

これで、「写真を撮って放り込んでおくだけ」の最強名刺管理システムが手に入りました。

  • ドライブ: ファイル名が「会社名_氏名」になってスッキリ!
  • スマホ: いつでも検索・電話・メールが可能!
  • コスト: ずっと0円!

一度設定してしまえば、あとはロボットが毎日コツコツ働き続けてくれます。ぜひ、このアプリを活用して、ビジネスをもっと効率化してくださいね!

ABOUT ME
記事URLをコピーしました