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


ここで取得したリンクは今回の場合 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を書いていきます。
今回はこんな感じの、名前とメールアドレスの入った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()
を用意しました。ユーザー名やアドレスは自分が用意したシートにあわせて変えてください。
結果

