見出し画像

【GAS】google フォームを使用して商品管理DBを作成する

GASを利用して都度時間のかかる商品登録を半自動化する構造を作成しました。
これにより、以下のメリットがあります。

  • 各業務の進捗状況の把握が可視化される。

  • それぞれの業務を並行して実行・更新が可能になる。

  • 商品に関する情報が一元管理されることにより、個人による認識の差が発生しなくなる。

  • あらかじめ、java、関数を組み込んでいるため、専門的知識を要さずにCSVを使用した業務をワンクリックで行える。(人件費コストカット)

  • 自社で作成したものになるため、その後のカスタマイズや、追加システム作成も容易(システム管理・運用コストカット)

使用するアプリケーション

  • google ドライブ

  • google フォーム

  • google スプレッドシート

  • google app script

1.商品の基本情報を登録するための、google フォームを作成する。

仕入れる商品の基本情報を入力するためのフォームを作成します。
google フォームを利用する理由として、

  • 無料で作成・運用が可能

  • 入力方法のバリエーションが豊富

  • テキスト入力の方法に制限がかけられる

  • GASを利用して運用コストを下げる目的には最適

などがあげられます。

google フォームを新規作成したらフォームの設定を行います。

  1. ウィンドウ上部のタブより「設定」をクリック。

  2. 「回答」のアコーディオンを開き、"メールアドレスを収集する"を「回答者からの入力」を選択。

  3. "回答のコピーを回答者に送信"「常に表示」を選択。

  4. "回答の編集を許可する"を「オン」に変更。

  5. "アップロード済みファイルの合計サイズの上限"は任意のサイズに変更。


質問を作成する。

1.ウィンドウ上部のタブより「質問」をクリック。
2.任意のファイル名を付ける。
3.今回は以下の項目を作成します。それぞれに入力方法に制限をかけながら作成します。
(「*」がついているものは必須項目にします。)

・商品名:記述式 (最大40字制限)
・販売開始日:日付
・*カテゴリ:ラジオボタン
・*仕入値(原価):記述式(数字のみ)
・商品テキスト:段落
・*商品画像1[製品確認用]:ファイルアップロード(特定のファイル形式で「画像」を選択)
・商品画像2[オンラインストア用]:ファイルアップロード(特定のファイル形式で「画像」を選択)
・*サイズ単位:プルダウン
・サイズ数値入力:記述式(数字のみ)

今回は上記の内容にしますが、任意で項目をしていただいても大丈夫です。

2.フォームの回答内容を蓄積するスプレッドシートを作成する

フォーム編集ページの上部の「回答」を選択し、スプレッドシートにリンクをクリック。すると回答の送信先を選択するポップアップが表示されます。
今回は「新しいスプレッドシートを作成」を選択します。
ファイル名はデフォルトの状態のままにします。
するとフォームで登録した項目が1行目に入力された状態でスプレッドシートが立ち上がります。

スプレッドシートにひと手間加えます。
A列を右クリックして、「左に1列挿入」を選択し、全体の項目を右に一つずらします。
A1セルに「編集用リンク」と記載しておきましょう。ここに再編集可能なリンクが出力されるようになります。

3.GASで回答編集用リンクを取得する。

スプレッドシートのメニューバーの 拡張機能 > Apps Scriptを選択。

起動してすぐはクリックしても起動しない時があります

起動すると以下の画面が新しいタブで立ち上がります。
この画面にコードを入力していきます。

4.コードを記入する。

以下のコードをコピーする。


function onFormSubmit(e){
  //回答シートのIDを保存
  var sid     = 'ここにGoogle ドライブのIDを入れる';
  var sname   = 'ここにフォームの回答のシート名を入れる';
  //(1)回答シートを取得
  var SS      = SpreadsheetApp.openById(sid);
  //最終行のAセルを取得
  var RNG     = SS.getSheetByName(sname).getDataRange();
  var lastRow = RNG.getLastRow();
  var rowA    = RNG.getCell(lastRow, 1);

  //(2)もし最終行A列にデータ(=編集用URL)が入っていたら関数終了
  if(rowA.getValue() != ""){
    Logger.log("新規登録ではなく既存送信データ編集を検知したためスクリプトを終了します");
    return 0;
  }

  //フォームのIDを保存
  var fid     = 'フォームのIDを入れる';
  //(3)フォーム回答データ一覧を取得
  var fRspnss = FormApp.openById(fid).getResponses();
  //(4)フォーム回答一覧から最後のデータ(=一番新しいデータ)の編集用URLを取得
  var url     = fRspnss[Number(fRspnss.length - 1)].getEditResponseUrl();

  //動作確認(URLが正しく取得できているかLogger.logへ出力)
  Logger.log("URL is %s",url);

  //(5)挿入用文字列を作成
  var str = url ;

  //var str = '=HYPERLINK("' + url + '","No.' + Number(lastRow - 1) + '")';
 
  //文字列を最終行Aセルへ挿入
  rowA.setValue(str);  
}

3で生成されたスプレッドシートのIDをURLからコピーする。
IDはhttps://docs.google.com/spreadsheets/d/v から /edit?resourcekey#gid=369939926 の間の文字列になります。
コピーしたIDを4でコピペしたJavaScriptコードの

 var sid     = 'ここにGoogle ドライブのIDを入れる';

の部分にIDをペースト。
※シングルクォーテーション(')を残してください!

続いて、シート名を入力します。今回はデフォルトのシート名「フォームの回答 1」をJavaScriptコードの

var sname   = 'ここにフォームの回答のシート名を入れる';

の部分にIDをペースト。
※シングルクォーテーション(')を残してください!

そして、フォームのIDを入力します。
フォームのIDはURLのhttps://docs.google.com/forms/d/から /editの間の文字列になります。

コピーしたIDを4でコピペしたJavaScriptコードの

 var fid     = 'フォームのIDを入れる';

の部分にIDをペースト。
※シングルクォーテーション(')を残してください!

Apps Script画面の、保存をクリックします。

5.トリガー設定をする

Apps Script画面の左サイドのメニュー内にある「トリガー」を選択。
選択後、以下のような画面が表示されるので、右下の「トリガーを追加」をクリックします。

各項目を以下のように設定します。

・onFormSubmit
・実行するデプロイを選択:Head
・イベントのソースを選択:スプレッドシートから
・イベントの種類を選択:フォーム送信時

設定したら「保存」をクリック。

6.動作チェック

フォームに戻ります。
フォームの編集画面の右上にある「送信」ボタンをクリックし、鎖アイコン🔗を選択し、リンクをコピーして、フォームの回答用ページを開きます。

適当に回答をしてみましょう。
回答が完了すると、回答通知のメールが自分のアカウントに送信されると同時に、スプレッドシートのA列にリンクが表示されています。
フォームの回答内容を編集したい場合は、メールのリンクもしくはスプレッドシートに出力されたURLから修正が可能です。


7.補足

こちらのシステムには2点問題点があります。

稀にGASがうまく機能せずリンクが取得できない場合があります。その場合の回避策として、メール通知を受け取れるようにしています。
googleフォームは画像などのファイルのアップロードは、修正ができない仕様になっています。ファイルのアップロードの再編集も可能にしたい場合は、フォームの種類を「記述式」にし、URLをコピペする仕様にするとよいと思います。

*おすすめの方法*
google ドライブにファイルアップロード用のフォルダを作成し、そこにアップしたファイルのURLをフォームにコピペするような形式をとれば、あらゆるファイルの管理が楽になると思います!

次回はこの回答データを使用した商品情報の活用方法についてまとめます。

最後までご覧いただきありがとうございました。

この記事が参加している募集

#おすすめアプリ

3,488件

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