【完全版】プロラインのフォーム回答をスプレッドシートに自動反映!事務作業から解放される温かな自動化ガイド

「LINEでお客様から申し込みが来るのは嬉しいけれど、その後のコピペ作業が辛い……」

「深夜まで名簿作りに追われて、肝心のお客様へのフォローが後回しになっている……」

もし、あなたがそんな風に一人で頑張りすぎてしまっているのなら、今日、この記事に出会えたことを一緒に喜びたいと思います。

プロラインフリーの「Googleスプレッドシート連携機能」を使えば、お客様がLINEで送ってくれたアンケートや申し込みの内容が、まるで魔法のように、一瞬であなたのスプレッドシートに書き込まれます。

今回は、この機能がなぜあなたのビジネスと人生を豊かにするのか、その理由と設定方法をどこよりも優しく解説します。

1. こんな悩みを抱えるあなたに、プロラインの自動連携を届けたい

一人でビジネスを運営していると、やらなければならないことが山積みですよね。

特に、以下のような悩みを持つ事業主様にこそ、この機能を活用していただきたいのです。

  • 「コピペ地獄」から抜け出したい: LINEのトーク画面を1つずつ開き、名前や住所をエクセルに貼り付ける……。この数分の作業が、10人、100人と重なると、あなたの貴重な時間がどんどん削られてしまいます。
  • 「入力ミス」が怖い: 疲れている時の手入力は、メールアドレスの間違いや住所の抜け漏れを引き起こしがち。大切なお客様へのご連絡に支障が出てしまうのが不安ですよね。
  • 「情報の共有」をスムーズにしたい: 外部のパートナーやスタッフさんと情報を共有する際、その都度データを送る手間を省きたい。
  • 「分析」をしてサービスを良くしたい: お客様の声(アンケート結果)を一覧で見て、もっと喜んでもらえるサービスを作りたいけれど、整理する余裕がない。

わかります、その気持ち。
事務作業って、やり始めるとあっという間に時間が過ぎちゃうんですよね。
でも、その時間は本当はお客様の笑顔を作るために使いたいもの。プロラインはその『手助け』をしたいと願っているんですよ。

2. スプレッドシート連携がもたらす「3つの幸せ」

この連携機能を導入すると、あなたの日常にこんな素敵な変化が訪れます。

① 「24時間、勝手に名簿ができる」という安心感

あなたが眠っている間も、お客様がLINEフォームに回答した瞬間に、スプレッドシートの行が追加されます。

朝起きてシートを開けば、最新の顧客リストが完成している……。

この安心感は、一度味わうと手放せません。

② ミスが消え、「信頼」が積み重なる

お客様が入力した内容がそのまま反映されるため、書き写しミスが起こりません。

正確なデータがあるからこそ、自信を持って迅速な対応ができ、お客様からの信頼もさらに深まります。

③ チームの「風通し」が良くなる

スプレッドシートを共有しておけば、あなたがわざわざ報告しなくても、スタッフさんは常に最新情報を確認できます。

「あの件、どうなった?」という確認のやり取りが減り、チーム全体が心地よく動けるようになります。

いいかい。仕組み化とは、冷たい機械化のことではない。
君の代わりに事務をこなしてくれる『分身』を作ることだ。
その分身が働くことで、君自身がお客様に直接、温かな言葉をかける余裕が生まれるのだよ。

3. 【図解】プロラインのフォーム回答をGoogleスプレッドシートへ自動反映させる全手順

プロラインフリーのフォームで受け取った回答は、Google Apps Script(GAS)という仕組みを使うことで、リアルタイムにGoogleスプレッドシートへ自動追記できます。

「どこのボタンを押せばいいの?」という不安を解消できるよう、一歩ずつ進めていきましょう。

前半:Googleスプレッドシート側の準備

まずは、データを受け取るための「箱」をGoogle側に作ります。

手順1:新規スプレッドシートを作成する

Googleドライブから新しいスプレッドシートを作成してください。

  • シート名:任意でOKです(例:「プロライン連携テスト」)。
  • シートの内容:この時点では白紙で大丈夫です。
<Googleドライブで新規にスプレッドシートを作成>
<Googleドライブで新規にスプレッドシートを作成>

手順2:Apps Scriptを開く

メニューバーの「拡張機能」をクリックし、その中にある「Apps Script」を選択します。

<作成したスプレッドシートのApps Scriptを開きます>
<作成したスプレッドシートのApps Scriptを開く>

手順3:サンプルコードを貼り付ける

Apps Scriptの編集画面が開きます。

最初から入力されている数行のコード(function myFunction...)をすべて削除し、空の状態にします。

<デフォルト既存のコードを全て削除>
<デフォルト既存のコードを全て削除>

そこに、以下のサンプルコードをすべてコピーして貼り付けてください。

✅ 【最新版】スプレッドシート連携サンプルコード クリックで開閉

下記のボタンを押してコードをコピーし、Google Apps Scriptの画面に貼り付けてください。
※貼り付け前に、既存のコードはすべて削除してくださいね!

function doGet() {
  return ContentService.createTextOutput("OK");
}

function doPost(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var debug = ss.getSheetByName('_debug') || ss.insertSheet('_debug');

  try {
    var p = (e && e.parameter) ? e.parameter : {};
    var raw = (e && e.postData && e.postData.contents) ? e.postData.contents : "";

    // 固定列(先頭3列)
    var sentAt = p.date
      ? p.date
      : (p.unixtime ? fmt_(new Date(Number(p.unixtime) * 1000)) : fmt_(new Date()));
    var uid = p.uid || "";
    var snsname = p["user_data[snsname]"] || "";

    // シート(form_nameベース)
    var sheet = getOrCreateSheet_(ss, sheetNameFromFormName_(p.form_name || "unknown"));

    // form_data(送信順)
    var parsed = parseOrderedFormData_(raw);
    var keysOrder = parsed.keysOrder;   // 送信順のキー配列
    var valuesMap = parsed.valuesMap;   // { key: [v1,v2...] }

    // ヘッダー準備(初回のみ作成。以後は上書きしない)
    ensureHeaderOnceAndExpand_(sheet, keysOrder);

    // データ行を「列の位置」で作る
    var baseLen = 3; // date, uid, snsname
    var lastCol = sheet.getLastColumn();
    var row = [];
    for (var i = 0; i < lastCol; i++) row.push("");

    row[0] = sentAt;
    row[1] = uid;
    row[2] = snsname;

    // form_data は「送信順に」3列目以降へ入れる
    for (var j = 0; j < keysOrder.length; j++) {
      var k = keysOrder[j];
      var arr = valuesMap[k] || [];
      var col = baseLen + j; // 0-based
      if (col >= row.length) break;
      row[col] = arr.join("\n");
    }

    sheet.appendRow(row);
    return ContentService.createTextOutput("OK");

  } catch (err) {
    debug.appendRow([new Date(), "ERROR", String(err), raw]);
    return ContentService.createTextOutput("NG");
  }
}

function ensureHeaderOnceAndExpand_(sheet, keysOrder) {
  var base = ["date", "uid", "snsname"];
  var baseLen = base.length;
  var lastCol = sheet.getLastColumn();
  var header = [];
  if (lastCol > 0) {
    header = sheet.getRange(1, 1, 1, lastCol).getValues()[0];
  }
  var hasHeader = false;
  for (var i = 0; i < header.length; i++) {
    if (header[i] !== "") { hasHeader = true; break; }
  }
  if (!hasHeader) {
    var newHeader = base.concat(keysOrder);
    sheet.getRange(1, 1, 1, newHeader.length).setValues([newHeader]);
    return;
  }
  var currentFormCols = Math.max(0, lastCol - baseLen);
  if (keysOrder.length <= currentFormCols) return;
  for (var j = currentFormCols; j < keysOrder.length; j++) {
    var keyName = keysOrder[j] || ("form_add_" + (j + 1));
    sheet.getRange(1, baseLen + j + 1).setValue(keyName);
  }
}

function parseOrderedFormData_(raw) {
  var keysOrder = [];
  var valuesMap = {};
  if (!raw) return { keysOrder: keysOrder, valuesMap: valuesMap };
  var parts = raw.split("&");
  for (var i = 0; i < parts.length; i++) {
    var part = parts[i];
    if (!part) continue;
    var eq = part.indexOf("=");
    var kEnc = (eq >= 0) ? part.slice(0, eq) : part;
    var vEnc = (eq >= 0) ? part.slice(eq + 1) : "";
    var key = decodeURIComponent(kEnc.replace(/\+/g, " "));
    var val = decodeURIComponent(vEnc.replace(/\+/g, " "));
    var m = key.match(/^form_data\[(.+)\]$/);
    if (!m) continue;
    var innerKey = m[1].replace(/\]\[\d+\]?$/g, "");
    if (!valuesMap[innerKey]) valuesMap[innerKey] = [];
    if (val !== "") valuesMap[innerKey].push(val);
    if (keysOrder.indexOf(innerKey) === -1) keysOrder.push(innerKey);
  }
  return { keysOrder: keysOrder, valuesMap: valuesMap };
}

function sheetNameFromFormName_(formName) {
  var prefix = "form_";
  var maxLen = 100;
  var name = String(formName).replace(/:/g, ":").replace(/[\\\/\?\*\[\]]/g, " ").replace(/\s+/g, " ").trim();
  if (!name) name = "unknown";
  var allow = maxLen - prefix.length;
  if (name.length > allow) name = name.slice(0, allow).trim();
  return prefix + name;
}

function getOrCreateSheet_(ss, name) {
  return ss.getSheetByName(name) || ss.insertSheet(name);
}

function fmt_(d) {
  return Utilities.formatDate(d, "Asia/Tokyo", "yyyy-MM-dd HH:mm:ss");
}
<サンプルコードの内容を貼り付け>
<サンプルコードの内容を貼り付け>

手順4:ウェブアプリとして公開(デプロイ)する

作成したコードを、インターネット上で動く「ウェブアプリ」の状態にします。

1.右上の「デプロイ」ボタンから「新しいデプロイ」を選びます

<右上の 「デプロイ」→「新しいデプロイ」 を選択してクリック>
<右上の 「デプロイ」→「新しいデプロイ」 を選択してクリック>

2.歯車アイコンをクリックし、種類を「ウェブアプリ」に変更します。

<歯車のアイコンにカーソルを合わせて種類を 「ウェブアプリ」 に>
<歯車のアイコンにカーソルを合わせて種類を 「ウェブアプリ」 に>
  1. 設定内容を必ず以下のようにします:
    • 実行するユーザー:自分
    • アクセスできるユーザー全員(Anonymousを含む)
    • ※ここを「自分のみ」にするとプロラインからデータが届きません。
  2. デプロイ」をクリックします
<設定内容: 実行するユーザー:自分/アクセスできるユーザー:全員に>
<設定内容: 実行するユーザー:自分/アクセスできるユーザー:全員に>
<アクセスを承認する>
<アクセスを承認する>

手順5:権限の承認(警告画面の進み方)

初回設定時はGoogleから承認を求められます。

もし「Googleはこのアプリを検証していません」という警告が出ても、自分のアカウント内で作ったプログラムなので安全です。

  • 進み方:「高度な(Advanced)」をクリック → 「(プロジェクト名)に移動」をクリック → 「許可」を選択します。
<権限の承認(警告画面の進み方)>
<権限の承認(警告画面の進み方)>
<さらに、「無題のプロジェクトへ(危険)」をクリック>
<さらに、「無題のプロジェクトへ(危険)」をクリック>

「続く」をクリックしてください。

<「続く」をクリック>
<「続く」をクリック>

手順6:ウェブアプリURLをコピーする

完了画面に表示される「ウェブアプリURL」をコピーして控えておきます。 ※末尾が /exec で終わるURLです。

<デプロイ後に表示される ウェブアプリのURL をコピーデプロイ後に表示される ウェブアプリのURL をコピー>
<デプロイ後に表示される ウェブアプリのURL をコピー>

後半:プロラインフリー側の設定

次に、プロラインから「さっき作ったURLにデータを送ってね」という指示を出します。

手順7:プロラインにURLを貼り付ける

<プロラインフリー管理画面のフォームページを開く>
<プロラインフリー管理画面のフォームページを開く>
  1. プロライン管理画面の「フォームページ」を開きます。
  2. 連携したいフォームを選択します。
  3. URL欄に、手順6でコピーした❷「ウェブアプリURL」を貼り付けます。
  4. ❸「保存」をクリックします。
<プロライン側にウェブアプリのURLを貼って連携>
<プロライン側にウェブアプリのURLを貼って連携>

最終確認:動作テスト

設定が終わったら、実際にLINEからフォームを送信してみましょう!

成功するとどうなる?

スプレッドシートに、フォーム名の付いた新しいシートが自動作成され、以下のデータが追記されます。

  • date:送信日時
  • uid:ユーザーID
  • snsname:LINEの表示名
  • form_data:アンケートの回答内容
<スプレッドシートに自動で追記されるか確認>
<スプレッドシートに自動で追記されるか確認>

💡 運用のコツと注意点

  • 項目名の変更:1行目の項目名は、見やすいように日本語(例:「お名前」「電話番号」など)に書き換えても問題ありません。
  • 行の挿入に注意:シートの途中に手動で行を挿入すると、次にデータが届く際に位置がズレることがあります。
  • コードを修正する場合:コードを書き換えた後は、「デプロイの管理」から「新バージョン」を選んで更新してください。そうすればURLを変えずに済みます。

これで『コピペ地獄』とはおさらばです!
最初はApps Scriptの画面にドキドキしちゃうかもしれませんが、手順通りに進めば大丈夫。
もしデータが届かないときは、手順4の『アクセスできるユーザー:全員』になっているか、もう一度チェックしてみてくださいね!

4. なぜ「プロラインフリー」なのか?

世の中には多くのLINEツールがありますが、スプレッドシート連携を無料で、しかもこれほど直感的に行えるツールは他にありません。

プロラインは、「頑張る個人を応援したい」という哲学で作られています。

だからこそ、本来はエンジニアに依頼するような高度な連携も、あなたが自分で設定できるように設計されているのです。

5. まとめ:事務作業を卒業して、もっと自由なあなたへ

スプレッドシート連携は、単なる「便利な機能」ではありません。

それは、あなたが「自分自身の時間」を取り戻し、もっとクリエイティブで、もっと愛溢れる仕事に集中するためのパスポートです。

今日、この設定を終わらせることで、来月のあなたの時間は数時間、いえ、数十時間も増えるかもしれません。

その時間で、新しいサービスを考えたり、ゆっくりお茶を飲んだり、家族との時間を過ごしたりしてくださいね。

プロラインフリーの公式X(旧Twitter)でも、日々ユーザーの皆さんがもっと楽に、もっと楽しくビジネスができるようなヒントが発信されています。

このスプレッドシート連携についても、多くの事業主さんが「もっと早く知りたかった!」と驚くほど、現場を変える力を持っているんですよ。

設定お疲れ様でした!
最初はドキドキするかもしれませんが、一度繋がってしまえば、あとはプロラインがずっとあなたの右腕として働いてくれます。
もし途中で迷ったら、いつでもこの記事を読みに戻ってきてくださいね。あなたの挑戦、ずっと応援しています!

プロラインフリーの無料アカウントはこちらから

プロラインフリーは、LINE公式アカウント専用のLINE集客ツールです。

通常、LINE公式アカウントの機能だけでは実現できない、シナリオ移動などを含めた複雑なLINEステップ配信や、コンテンツページの作成などが、プロラインフリーを使う事で実現できます。

多くの個人事業主、企業様が、このプロラインフリーを導入、集客の自動化に成功しています!

また、公式LINEのステップ配信ツールの多くは有料ですが、プロラインフリーは、送信数無制限にも関わらず無料で使う事ができます。

おすすめの記事