「DLsite.com新作お知らせメール」を自動でまとめるスクリプトが便利だった
はじめに
『DLsite.com』、デジタル同人作品のダウンロード販売最大手であり使っている人も多いだろう。そして「お知らせメール機能」という機能が提供されている。
DLsite.comのお知らせメールとは
お気に入り登録している作者・サークル名,ジャンル,フリーワードに該当する新作が発売されるとメールで通知される、便利な機能。
お知らせメールの欠点
毎日深夜1時と同日22時の2回配信される。数日確認しないとメールボックスにどんどん溜まっていく。溜まったメールを1通ずつ開いて確認するのが面倒。数日分のメール内容を一度にまとめて確認したい。
解決策
GoogleAppScript(GAS)でGmailに届いたDLsiteお知らせメールの内容をコピーして、HTMLページとして一括表示する
コード
function doGet() {
/* GoogleAppsScriptでWebアプリケーションを作るときのおまじない */
var app = HtmlService.createTemplateFromFile('index.html');
return app.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('DLsite.comお知らせメールまとめスクリプト');
}
function getBody() {
return searchMail();
}
function searchMail() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
const read = true; //デバッグ用:処理したメールを既読に。(未読のままにしたいときは「=false」に変更)
var strTerms = '"DLsiteお知らせメール" is:unread -割引が -許可されました'; //検索条件
var myThreads = GmailApp.search(strTerms); //条件にマッチしたスレッドを取得 → 一次元配列で格納
var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する → 二次元配列で格納
if(myMsgs.length == 0){
return '未読のDLsiteお知らせメールはありません';
}else{
var cnt_all = 0;
var cnt = 0;
var tmp = "";
var dayOfWeekList = [' (日)',' (月)',' (火)',' (水)',' (木)',' (金)',' (土)'];
/* メール総件数のカウント */
for(var i = 0;i < myMsgs.length;i++){
cnt_all += myMsgs[i].length;
}
/* 各メールから日時、内容を取り出す*/
for(var i = 0;i < myMsgs.length;i++){
for(var j = 0;j < myMsgs[i].length;j++){
var date = myMsgs[i][j].getDate(); //Gmail型のgetDate()は日付型を返す。日だけを返すJSのgetDate()とは意味が違うので注意
if(j > 0){
date.setDate(date.getDate()-1);
}
tmp += '<div style="margin:0 auto;width:100%;max-width:600px;">';
tmp += '<h1>';
tmp += (++cnt) + '/' + cnt_all + '件';
tmp += '</h1>';
tmp += '<div style="text-align:center">';
tmp += '<h2>';
tmp += date.getMonth() + '月';
tmp += date.getDate() + '日';
tmp += dayOfWeekList[date.getDay()];
tmp += '</h2>';
tmp += '</div></div>';
tmp += myMsgs[i][j].getBody();
if(read){
myMsgs[i][j].markRead();
}
}
}
tmp += '<div style="margin:0 auto 20px;width:100%;max-width:600px;text-align:center">';
tmp += '<h2>=END=</h2>';
tmp += '作者: ' + '<a href="https://twitter.com/metatetsu" target="_blank">@metatetsu</a><br/>';
tmp += 'このスクリプトを他の人に教える! → <a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-size="large" data-text="「DLsite.com新作お知らせメール」を自動でまとめるスクリプトが便利だった" data-url="https://note.com/metatetsu/n/n2e4bdd10d30d " data-show-count="false">Tweet</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><br/>';
tmp += 'GoogleAppsScriptによって作成。 解説 → ' + '<a href="https://note.com/metatetsu/n/n2e4bdd10d30d" target="_blank">note記事</a>';
tmp += '</div>';
return tmp;
}
}
使い方
1. スクリプトが設置されている以下のURLへアクセス
2. 初回は権限許可ダイアログが表示される。「詳細」をクリックして許可ボタンを表示、「移動」を選択する。
※コードに書かれている通り、使用者アカウント上でのローカル処理のみでありデータの外部送信は一切行ってないのは約束する。
3. あとは使用者Googleアカウント上にて自動で処理が行われる。(受信トレイに未読のDLsiteお知らせメールがない場合は処理が行われない)
4. 次回以降のためにページをブックマークするのがおすすめ。(処理結果ページをそのままブクマしてOK)
動作例
DLsiteお知らせメールが一覧表示される
あとがき
上記コードを参考にすれば「○○な条件のメールを抽出して一覧表示」するスクリプトが簡単に作れる。それほど難しくないGoogle Apps Scriptは覚えるとすごく便利なのでみんな勉強してみよう
この記事が気に入ったらサポートをしてみませんか?