LoginSignup
0
0

More than 3 years have passed since last update.

GASを使って課題提出メールのチェック

Posted at

※自分用の覚書です

課題提出

条件
-学生からの課題提出をGmailで受け付けている
-学生は課題提出時に,提出期限日を含めた件名をつけなければならない (例:progc1:20190607)

準備

課題毎で提出時の件名が定まっているので,件名を使ってラベル分けする.

やりたいこと

誰が提出したかを確認したい
→学生のアドレスは学籍番号が含まれるため,送信元アドレスが分かれば誰の提出かわかる
→ラベル分けしたメール一覧から送信元アドレスを取れればよい(要するにこれだけ)

実装

Gmailのデータを処理したいので,GASが便利

GASソースコード

function getMail() {
  var label = Browser.inputBox("label name");
  var start = 0;
  var max = 500;
  return GmailApp.search('label:' + label, start, max);
} 

function onSaveMailToSheet() {
  var sheetName = 'シート1';
  var ss = SpreadsheetApp.getActive().getSheetByName( sheetName );
  var row = ss.getLastRow() + 1;
  var threads = getMail();

  for( var i in threads ) {
    var thread = threads[i];
    var msgs = thread.getMessages();
    for( var j in msgs ) {
      var msg = msgs[j];
        var date = msg.getDate();
        var from = msg.getFrom();
        var values = [
          [date, from]
        ];
        ss.getRange("A" + row +":B" + row).setValues(values);
        row++;
      }
    }
  }

inputでlabelを入力
GmailApp.search 入力されたラベルに一致するメール(スレッド)を入手
msgs=thread.getMessages() スレッドをメッセージ単位に分割
date=msg.getDate()
from=msg.getFrom() 日付と送信元アドレスを入手

ただしこのままではメールの送信者が "kanon"dawka@ga.fa.jp などの場合にこのままgetされるので,区切る必要あり

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