速水拓真 営業×AI 実践シリーズ
Zenn

ノーコード連携が5,000行で止まる理由 — 4つの壁をAPI連携で外す

初出: Zenn

見込み客リストが月5,000社まで育ったとします。1行ごとに初回メールの文面案をAIに生成させるフローを、ノーコード連携で組んでいたとします。

翌朝、シートを開くと2,137行目で止まっていました。エラー通知に書いてあるのは「フローが失敗しました」の一行だけ。なぜ止まったか、どの行で止まったかは、通知をどれだけ読んでも分かりません。

再実行のボタンを押すと、1行目からやり直しです。月のタスク残高は3,000を切っていて、今月はもう回りません。夜の10時に、2,000行を手作業に戻る。

頑張って組んだ自動化が、いちばん忙しい夜に手作業を増やす。これは比喩ではなく、実際に起きることです。

この夜に起きていることを分解すると、ノーコード連携の構造上の壁が4つ見えてきます。

壁1 回数の壁 — 1工程ごとに課金が積み上がる

タスク型のノーコードツールは、1工程の実行で1課金です。

1行の処理に3工程(行の読み込み → AI生成 → 書き込み)掛かる構成なら、5,000行で月15,000タスクを消費します。主要ツールの料金で概算すると、月1万タスクを超えたあたりで上位プラン(月額1〜2万円)が必要です。

しかも5,000行を1晩で回すと、1か月分のタスクを1晩で使い切ります。自動化の本質は「失敗しても気軽に回せる」ことなのに、1回ごとにお金が鳴る仕組みでは、試す回数そのものが減ります

壁2 件数の壁 — 1回で運べる行数に上限がある

ノーコードのフローは基本「1トリガーで1行」です。5,000行なら5,000回のトリガーか、ループ機能で回すことになります。

ループには数百回程度の上限が設けられていることが多く、1回の実行時間が数分で頭打ちになる構成も珍しくありません。つまり5,000行は、構成の前提として「1晩で終わらない」のです。

しかも途中で止まった場合、再開は「続きから」ではなく「最初から」です。

壁3 見えなさの壁 — 失敗の理由が出てこない

壁2と組み合わさって致命的なのがこれです。多くのノーコードツールのエラー記録は「失敗」の一行で、行番号も理由も、遡って調べる画面も用意されていません。

2,000行目で止まった理由を知る方法は、ログを1個ずつ開いて見て回ることだけです。原因が分からないまま再実行すれば、同じ失敗をもう一度1,000行ぶん引き起こします

手作業に戻る人の半分以上は、処理そのものではなく、この「理由が分からない」で心が折れています。

壁4 目録の壁 — 自社の処理はそもそも載っていない

ノーコードツールが繋げられるのは、接続先の目録に載っているサービスだけです。Google SheetsやSlackなら載っています。

しかし「自社の採点式で見込み度を計算する」「同じ会社名の重複行を1行にまとめる」「途中で止まったら続きの行から再開する」——こうした自社ルールは、どのツールの目録にも載っていません

分岐を重ねて近い形には組めますが、3段を超えたあたりで設定画面は配線図のスパゲッティになり、半年後には誰も触れなくなります。

4つの壁の共通項

一つです。あなたとAIの間に、「代行業者」が入っていることです。

API連携とは「直接取引の窓口」である

ChatGPTの画面は、人間が使うための受付です。同じ厨房の奥には、プログラム専用の別の受付が用意されています。それがAPIです。窓口が違うだけで、奥にいるAIは同じです。

APIへの依頼は、JSONという定型の書式で渡します。封筒に宛名と本文を所定の欄へ書いて投函するようなもので、返事も同じ書式で戻ってきます。

ここで、ノーコードツールの正体が見えます。ZapierやMakeは、このAPI窓口への「代行」を請け負っている業者です。

  • 対応アプリの目録 = 代行できる範囲の一覧
  • タスク課金 = 代行の手数料
  • 実行間隔の設定(15分ごと等) = 業者の受付時間

API連携とは、代行を抜いて直接取引することです。

GASで、300行ずつ刻みながら走らせる

ここからが実装です。置き場所にGoogle Apps Script(GAS)を選ぶ理由は4つあります。

  1. 無料であること
  2. ブラウザだけで動き、会社のPCに何も入れないこと
  3. スプレッドシートと最初から繋がっていること
  4. 実行の履歴とログが自動で残ること

GASには実行時間の上限があります(個人アカウントで6分、Workspaceなら30分)。だから300行ずつ区切って走り、どこまで終わったかをシートの列に刻みながら進めます

// ==== 300行ずつ処理して、進捗をG列に刻む ====
const API_KEY    = "sk-...";   // 自分のキーを貼る
const SHEET_ID   = "....";     // スプレッドシートのID(URLの一部)
const SHEET_NAME = "リスト";
const BLOCK      = 300;        // 1回に処理する行数

function 文面案を生成() {
  const ss = SpreadsheetApp.openById(SHEET_ID);
  const sh = ss.getSheetByName(SHEET_NAME);
  const last = sh.getLastRow();
  const values = sh.getRange(2, 1, last - 1, 7).getValues(); // A〜G列

  let done = 0;
  for (let i = 0; i < values.length; i++) {
    const row = values[i];
    if (row[6] === "完了") continue;   // G列が完了なら飛ばす=続きから再開できる

    const prompt = `次の会社に送る初回メールの文面案を1通、200字で。会社名:${row[0]}`;
    try {
      const res = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", {
        method: "post",
        headers: { Authorization: "Bearer " + API_KEY },
        contentType: "application/json",
        payload: JSON.stringify({
          model: "gpt-4o-mini",
          messages: [{ role: "user", content: prompt }]
        }),
        muteHttpExceptions: true
      });
      const data = JSON.parse(res.getContentText());

      if (data.error) {
        // 失敗の理由を、その行に残す
        sh.getRange(i + 2, 7).setValue("失敗:" + data.error.message);
        continue;
      }
      sh.getRange(i + 2, 6).setValue(data.choices[0].message.content); // F列に文面案
      sh.getRange(i + 2, 7).setValue("完了");                          // G列に印
    } catch (e) {
      sh.getRange(i + 2, 7).setValue("失敗:" + e.message);
    }

    done++;
    if (done >= BLOCK) break;   // 6分の上限に当たる前に自分から区切る
  }

  Logger.log(done === 0 ? "処理対象なし(全行完了)"
                        : done + "行を処理しました。続きはもう一度実行してください。");
}

書き換えるのは上の3か所(APIキー・シートID・シート名)だけです。

この道具が壁をどう外すかを、1つずつ対応させます。

  • 壁1(回数): 課金が「工程ごと」から「使った文字量ごと」に変わります。1,000文字読ませて300文字書かせる1回の生成は、miniクラスのモデルで0.1円にも満たない計算です。5,000通でも数百円で済みます。
  • 壁2(件数): BLOCK で区切りながら、G列の「完了」を目印に続きから再開できます。最初からやり直す必要がありません。
  • 壁3(見えなさ): 失敗した行だけに 失敗:理由 が残ります。翌朝、3,000行目に「残高不足」とあれば、その1行だけ再実行すれば済みます。
  • 壁4(目録): 自社ルール(採点式・重複まとめ・担当ごとの文言切替)は、日本語でプロンプトに書くだけです。目録に載っているかどうかは関係ありません。

移行するか、しないかを決める表

API連携が常に正解なわけではありません。次の表がすべて左側なら、ノーコードはまだ最適解です。

確認項目 ノーコードのままでいい APIへ移行の目安
月の実行回数 1,000回未満 5,000回以上
1回の処理件数 100行未満 1,000行以上
ツール費用 月5,000円以下 月1万円を超えた
失敗時の再実行 最初からでも困らない 続きから再開したい

右の列に寄る項目が1つでもあれば、この道具が回収します。全部左なら、この話は棚上げして構いません。表だけ覚えて帰れば、半年後の判断は速く済みます。

まとめ

止まった自動化を「頑張って直す」のではなく、止まり方が分かる形に設計し直す。これがノーコードからAPIへ移る本当の価値です。

  • 課金は回数から従量へ
  • 実行は一括から分割+再開へ
  • 失敗は一行から行単位の理由へ
  • 自社ルールは目録の外側から、プロンプトの中へ

この記事の元になった書籍では、APIキーの発行(5手)から接続テスト、混雑ルール(レートリミット)を守りながら朝6時に自動運行させる設定まで、通しで扱っています。

📗 営業の仕事をAIに任せろ — 見込み客リストから提案書まで、1人で回す営業自動化(Kindle・読み放題対象)

書籍の内容と読者特典については、こちらのサイトにまとめています。

営業×AI実践シリーズ 全3作

Kindle Unlimited 読み放題対象 — 追加料金なしで読めます

← 記事一覧へ

← 商談で読み上げた数字が、ひとつだけ古かった話…