先日記事にしたIFTTTが不調なので、GmailのスターをトリガーとするアクションをGoogle Apps Scriptでカバーするというものがあります。
前回は、OmnifocusのMailDropという機能へアクセスするように設定したコードをアップしました。
といっても、両方Gmailでメールを送信しているだけなのですが。
今回は、Evernoteへ投稿
今回は、Evernoteへ投稿するコードです。
前回とは違い、Evernote用にノートブックを指定できるようにしました。
function main(){
CreateEvernoteFromStarredGmail("ここにEvernoteのメールアドレス","処理済みを表すラベル(例えばSendEvernoteなど)","ノートブック名(空白でもOK)",["タグ名を配列で入力"]);
}
function CreateEvernoteFromStarredGmail(mailAddress,gmaillabel,notebookName,tagNameList){
this.mailAddress = mailAddress;
this.label = gmaillabel;
this.notebookName = notebookName;
this.tagNameList = tagNameList;
var subject = function (notename){
if (this.notebookName){
var notebookName = this.notebookName;
} else {
var notebookName = "";
}
if (this.tagNameList){
var tag = this.tagNameList.join(' '+'#');
tag = '#' + tag;
} else {
var tag = "";
}
return notename + ' ' + notebookName + ' ' + tag;
}
function send(){
var label = _getLabelWithName(this.label);
var starredMails = GmailApp.search("is:starred -label:" + label.getName());
for (var i = 0; i < starredMails.length; i++) {
var messages = starredMails[i].getMessages();
for (var k = 0; k < messages.length; k++) {
if (messages[k].isStarred()){
var mailSubject = messages[k].getSubject();
var mailBody = messages[k].getBody();
starredMails[i].addLabel(label);
MailApp.sendEmail({
to: this.mailAddress,
subject: subject(mailSubject),
htmlBody: mailBody,
});
}
}
}
}
send();
}
function _getLabelWithName(name){
var label = GmailApp.getUserLabelByName(name);
if (!label){
label = GmailApp.createLabel(name);
}
return label;
}
上記のコードを新規Google Apps Scriptにコピペして、main関数を実行するとスターのメールは全てEvernoteへ転送されます。
定期的に実行したい場合は、リソース>現在のプロジェクトのトリガーから時間主導型のトリガーを設定してください。
IFTTTではなぜ、ずっと動いていないのか不明で解決する方法もわからないのですが、これで満足し始めています。