#Goole Formで得たデータをいろんなところで自動で使いたい!
Formで得たデータはスプレッドシートへ簡単に連携できますが、Gmailで自動で返信したり、そのデータを自動でいろんなところに保存したい。仕事したくない。と思って昔作ったスクリプトですが、忘備録と誰かの役にちょっとでも立てれば良いと思うので、公開します。
流れとしては、Google Form -> Spreadsheet 連携。それからトリガを使ってスクリプトを実行し、自動返信や連絡帳に保存、Google Groupのメーリングリストに登録、というところまで。
##Spreadsheetからデータを取得する。
//現在のシートを取得
var sheet = SpreadsheetApp.getActiveSheet();
//最後の行数を取得、この最新行について処理する。
var row = sheet.getLastRow();
//最後の列数を取得
var column = sheet.getLastColumn();
//getDataRangeで取得する範囲を決定(これで取得する範囲を限定すると動作が早いかもしれません!)
var range = sheet.getDataRange();
//各種変数、今回はメールとお名前
var mail = "";
var firstname = "";
var lastname = "";
//各列を巡回
for (var i = 1; i <= column; i++ ) {
//ヘッダを取得
var header = range.getCell(1, i).getValue();
//最新行の値をリストとして取得
var value = range.getCell(row, i).getValue();
//ヘッダ情報が一致したとき、情報を取得
if ( header === '苗字 (Lastname)' ) {
lastname = value;
}
if ( header === '名前 (Firstname)' ) {
firstname = value;
}
if ( header === 'メールアドレス' ) {
mail = value;
}
}
}
##Gmail APIで連絡帳に追加
Gmail APIを使うと、簡単にスクリプトからメール送信ができます。テストは自分のメールアドレス宛にしましょう笑
var title = "自動返信メールのタイトル";
var contents
= "自動返信メールの内容";
//メールの内容、これだと改行がないですが、変数を使ってある程度自由に作れると思います。
contents = contents + lastname + "様、ご登録ありがとうございました。";
//Gmail APIでメールを送る
GmailApp.sendEmail(mail,title,contents);
##People APIで連絡帳に追加
People APIは詳しくはGoogleさんのドキュメントをご覧いただきたんですが、createContactメソッドでこんなふうに連絡帳に追加が可能です。
//Create Contact through API
var connections = People.People.createContact(
body={"names": [{"givenName": firstname, "familyName": lastname}],
"emailAddresses": [{"value":mail}],
});
##Members APIで今回のメールアドレスをGoogle Groupに追加
メンバースAPIのinsertというメソッドでNewMemberのディクショナリを追加してあげます。
//Add email to Google Group
var groupEmail = 'Google Groupのメールアドレス';
var NewMember =
{
email: mail,
role: 'MEMBER'
};
AdminDirectory.Members.insert(NewMember, groupEmail);
こう見ると結構簡単そうですが、最初は何が何だか分からなくて二、三日くらい時間を食い潰しました。誰かの役に立ちますように!