概要
Gmailではスレッドに対してラベル、メッセージに対してはスターや既読を付けることができる
しかし、メッセージについたスターをGoogle app scriptを使って外すとGmailの受信BoxのUI上で反映されていないことを発見し、調査した。
再現
状況を再現するコードを用意した。
事前にスターを付けたメールを1件用意しておく
function getLatestStarredMail() {
const threads = GmailApp.search("is:starred");
const latestMsg = threads[0].getMessages()[0];
return latestMsg;
}
function traceUnstar(message) {
const date = message.getDate();
Logger.log("Date : " + date);
const subject = message.getSubject();
Logger.log("Subject : " + subject);
traceIsStarred(message);
message.unstar();
Logger.log("unstar message");
message.refresh();
Logger.log("refreshed");
traceIsStarred(message);
}
function traceIsStarred(message) {
if (message.isStarred()) {
Logger.log("starred");
} else {
Logger.log("unstarred");
}
}
function testStarUI() {
const message = getLatestStarredMail();
traceUnstar(message);
}
testStarUIを実行しても、受信ボックス上の当該メールのスターは外れていないように表示されているがログではきちんとスターが外れている
一方でis:starredでサーチするとしっかりスターが外れていることが確認できる。
フィルター機能ではしっかりと反映されている。受信ボックスだけの表示不具合のようだ。
過去の報告
同様の報告を探したところ1件見つかった
しかし、具体的な解決策はなかった。
同スレッド内で公式に報告したとあったので、確認した
ただ、いまだに解決していないようである。4年も前から残り続けている不具合だった。
結論
- Webアプリ受信ボックス上でのみGASからStar()やUnstar()したメッセージの状態が反映されない
- Webアプリから見る際はis:starredでフィルターして操作すると間違いがない