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

Google ScriptでGoogle formから得たデータを各所に保存、自動返信など

Last updated at Posted at 2020-05-21

#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);

こう見ると結構簡単そうですが、最初は何が何だか分からなくて二、三日くらい時間を食い潰しました。誰かの役に立ちますように!

0
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
0
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?