0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google form を使って整理番号を振り管理&メールを送る方法

Last updated at Posted at 2021-11-12

google form では,フォームが入力を受けとった際,スクリプトを実行することができます.この機能を使って整理番号を振ってメールを返しつつスプレッドシートにその番号を保存し番号を管理するスクリプトを作成したので紹介します.こちらは予約フォームになどに使用することを想定しております.ご自由にお使いください.(不具合は自己責任で.)
なお,今回作成には Windows 10 の Chrome を使用しています.

#Google formでスクリプトを使用する方法
Google form の作成画面の三点リーダをクリックすると下記のメニューが現れる.ここからスクリプトエディタを選択する.

スクリーンショット (79).png

メールアドレスの収集

Google form 編集ページから [設定] タブを開き,[回答] > [メールアドレスを収集する] を選択する.この際,[回答のコピーを回答者に送信] はオフのままにしておく.

スプレッドシートの作成

Google form 編集ページから [回答] を開き,緑のスプレッドシートのマークをクリックし,回答を保存するスプレッドシートを作成する.
スプレッドシートが開かれた後,後で使うためフォームへのURLをコピーしておく.
またこの時に,フォームの最左列を選択し,右クリックして [左に1列挿入] を選択する.この挿入した列に整理番号を保存することになる.

コード

スクリプトエディタを開くと [コード.gs]が開かれているので,以下に書き換える.

function myFunction(e) {
  
  const applicant = "";
  const itemResponse = e.response.getItemResponses();
  let sendToAddress = e.response.getRespondentEmail();
  var body = "";

  for (let i = 0; i < itemResponse.length; i++){    
    const formData = itemResponse[i];
    const title = formData.getItem().getTitle();
    const response = formData.getResponse();
    body += "[" + title + "] : " + response +"\n";
  }
  
  var spreadsheet = SpreadsheetApp.openById("$$$$");
  var Sheet = spreadsheet.getSheets()[0];
  var range = Sheet.getRange(Sheet.getLastRow(),1);
  var id = Sheet.getLastRow()-1
  const customer_id = ('0000' + id).slice(-4);
  console.log(customer_id);
  body = "整理番号 : "+customer_id +"\n"+ body
  if(range.isBlank() == true){
    range.setValue("=ROW()-1");
  }

  
  console.log(sendToAddress);
  console.log(body);
  var mailTitle = 'ご予約ありがとうございます.';//メールのタイトルを設定
  MailApp.sendEmail(sendToAddress,mailTitle,body);
}
  var spreadsheet = SpreadsheetApp.openById($$$$);

の$$$$の部分にはフォームの回答が入力されるスプレッドシートのIDを記述する.
IDは,先ほどコピーしておいたスプレッドシートのURLの
https://docs.google.com/spreadsheets/d/$$$$/
の$$$$の部分となる.
また,bodyはメール本文であるため,送りたい内容に合わせて変更すればよい.同様に,mailTitleも変更可能である.
上記の例では,本文は整理番号と質問内容・回答となる.
ただしメールの送信者はform作成に使用したアカウントのアドレスで固定される.

続いてApps script の左のタブから [設定] > [「appsscript.json」マニフェスト ファイルをエディタで表示する] にチェックを入れた後,エディタに [appsscript.json] が追加されているのでそれを開き,

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  
  "oauthScopes": ["https://www.googleapis.com/auth/forms.currentonly" , "https://www.googleapis.com/auth/forms", "https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/script.send_mail"]
}

と変更.

編集後,[コード.gs]を開き,実行ボタンを押す.その際権限の許可を求めるページが出てくるので許可する.google以外の配布であると表示されるが,構わず許可する.(本作成者が信頼できないと考える場合は拒否して構わない)この実行はイベントの入力がないため必ず失敗するが問題ない.

トリガーの追加

Apps script の左のタブから[トリガー]をクリックし,右下の>[トリガーを追加]をクリックし,イベントの種類を選択をフォーム送信時にして保存.
スクリーンショット (81).png

以上で実行可能な状態になる.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?