5
5

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 5 years have passed since last update.

個別に名前の入ったGoogleFormsをGmailで送信した

Posted at

Googleフォームを使ったアンケートで、あらかじめ名前が入ったアンケートを個別に一斉に送りたい時にやった手順

フォームを用意

スクリーンショット 2018-06-30 23.14.56.png こんな感じの、名前を入力する項目が入ったフォームを用意 ## 事前に入力したURLを取得 「事前に入力したURLを取得」を開く。今回はお名前のところを事前入力して作りたいので、お名前のところに「hoge」と入力する。 (hogeの部分はあとでGASで置換するので、わかりやすければなんでもいいが、日本語にするとあとでエンコードの問題が発生して置換しづらくなるのでさけた方がいい) できたら「リンクを取得」を押し、左下に出てくる「リンクをコピー」を押してリンクを取得する スクリーンショット 2018-06-30 23.42.48.png

ここで取得したリンクは今回の場合 https://docs.google.com/forms/d/e/1FAIpQLSevwd9U9rBYKNKnq_HeN-2irodHg9k4MUUm4fg9W3-tBiFE9A/viewform?usp=pp_url&entry.1570869996=hoge" のようになっています。名前の部分でhogeと入力した部分が最後のentry.1570869996=hogeに対応しているわけですね。この部分を置換して好きな値を代入すればうまくフォームに名前を入力したまま送信できそうです。

GASを利用してGmail、スプレッドシートと連携する

フォームの準備が整ったので、今度はGASを書いていきます。
スクリーンショット 2018-07-01 0.49.24.png
今回はこんな感じの、名前とメールアドレスの入ったUsersというシートを用意しました。ここから個別にGmailで送信したいと思います。

//コピーしたURLをforms_urlに代入
var forms_url = "https://docs.google.com/forms/d/e/1FAIpQLSevwd9U9rBYKNKnq_HeN-2irodHg9k4MUUm4fg9W3-tBiFE9A/viewform?usp=pp_url&entry.1570869996=hoge"

//ユーザー一覧のシートをここで設定
var Users_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Users");
var Users_last_row = Users_sheet.getLastRow();
var Users_last_column = Users_sheet.getLastColumn();
var Users_list = Users_sheet.getRange(1,1,Users_last_row,Users_last_column).getValues();

////////////////////////
//
//メニュー追加
//
////////////////////////

function onOpen(){
  var menu =[{name:'アンケート送信', functionName:'Send_Forms'}]
  SpreadsheetApp.getActiveSpreadsheet().addMenu("アンケート送信",menu);
}

///////////////////////
//
//アンケート送信
//
///////////////////////

function Send_Forms(){
  for(var i =1; i< Users_last_row; i++){
    var users_name    = Users_list[i][0]; //ユーザー名
    var users_address = Users_list[i][1]; //メールアドレス
    var replace_url   = forms_url.replace("hoge",users_name); //ユーザー名をアンケートに埋めこむ部分
    var body          = replace_url  //メール本文
    var subject       = "アンケート のご協力"  //件名
    GmailApp.sendEmail(users_address, subject, body)  //Gmail送信
  }
}

メニューにメール送信の項目を作っておくとその後使いやすいと思いfunction onOpen()を用意しました。ユーザー名やアドレスは自分が用意したシートにあわせて変えてください。

結果

スクリーンショット 2018-07-01 15.28.01.png スクリプトを実行した結果こんな感じで無事に送信できました。URLを開いてみると スクリーンショット 2018-07-01 15.50.53.png 確かに事前に名前が入ったフォームができていました。 ### まとめ メールアドレスを必須にすればユーザー管理が楽になるが、ユーザーに余計な入力の負担がかかるのが嫌だったので、事前に名前くらいは入力させたかったので作りました。これで例えば誰からアンケートの結果が返ってきてないなど管理ができます。ただ、名前を回答者が書き換えちゃえるのが欠点。
5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?