通知から直接メールをアーカイブするか、返信するかを選択できる優れた機能として、Gmailアプリの最新バージョン。
私の問題は、通知からアーカイブした場合、(既読としてマークされるのではなく)未読のままになることです。とにかくそれを回避する方法はありますか?
通知から直接アーカイブされた電子メールに自動的に既読のマークを付けたいのですが。
通知から直接メールをアーカイブするか、返信するかを選択できる優れた機能として、Gmailアプリの最新バージョン。
私の問題は、通知からアーカイブした場合、(既読としてマークされるのではなく)未読のままになることです。とにかくそれを回避する方法はありますか?
通知から直接アーカイブされた電子メールに自動的に既読のマークを付けたいのですが。
回答:
Google Scriptって言った?
このスクリプトの背後にある考え方は、受信トレイにない(つまり、アーカイブされた)メッセージを既読としてマークすることです。
- スクリプトを開始するには、script.google.comにアクセスしてください。
- 小さなポップアップでGmail用のスクリプトを作成することを選択します。
- 提供されているすべてのサンプルコードを削除します。
これをこれに置き換えます(APIリファレンスを使用して記述)。
function markArchivedAsRead(){ var threads = GmailApp.search( 'label:unread -label:inbox'); GmailApp.markThreadsRead(threads); };ファイル>保存でプロジェクトを保存します。
- [ファイル]> [バージョンの管理]を使用して新しいバージョンを追加し、「初期バージョン」と入力して送信します。
- [実行]> [markArchivedAsRead]を使用してテストを実行し、要求されたときにアプリを確認して承認します。
- [リソース]> [現在のプロジェクトのトリガー]を使用して新しいトリガーを追加し、上記の関数を1分ごとに実行することを選択します。
- スクリプトを再度保存して終了します。
毎分実行する必要があることはわかりませんが、定期的に実行する限りは。
これは問題の直接の回答ではありません。受信トレイにない未読メッセージがある理由がある場合、これは機能しません。
私は次のGoogle Scriptでそれを動作させることができました。
これは@AlEverettの回答と同じですが、受信トレイを完全にスキップした(フィルターなどから)既読メッセージとしてマークされることはありません。
残念ながら、メッセージを非常に速く(平均して30秒未満)アーカイブする傾向がある場合は、機能しません。
/** Mark as read archived threads which were previously in the inbox (determined by the label "i"). **/
function cleanAndroidArchived(){
markArchivedAsRead();
labelInboxAsI();
}
function markArchivedAsRead() {
var threads = GmailApp.search('in:unread label:i -label:inbox');
var label = GmailApp.createLabel("i");
label.removeFromThreads(threads);
GmailApp.markThreadsRead(threads);
};
function labelInboxAsI() {
var threads = GmailApp.search('in:unread label:inbox');
var label = GmailApp.createLabel("i");
label.addToThreads(threads);
};
@BruceConnorのケースで問題が解決したと思います。スクリプトが機能する前に、スクリプトが実行されるのを待つ必要があります。
Gmailは、フィルターが何にも一致しないことを訴えますが、この場合、受信トレイに残っているすべての受信メッセージに一致します。
その結果、すべての新しい受信メッセージはこのタグによって自動的に「記憶」されます。アーカイブを押すと、スクリプトは受信ボックスリストを「i」ラベルと比較し、どのメッセージがアーカイブされたかを確認し、それらのみを「」としてマークできます。読んだ"。すべてのメッセージがアーカイブの「i」キューに割り当てられるため、アーカイブを待つ必要はありません。
おまけ:また、新しい「i」ラベルを「メッセージリストに表示しない」と「ラベルリストに表示しない」に設定したので、まったく表示されません。(新しい「i」ラベルの横にある小さな矢印をクリックして、これらのオプションを選択します。)
@ al-eの回答は機能しますが、コメントに記載されている小さなバグがあります。私はこのバグを解決するスクリプトの別のバージョンを作成し、数年間それを使用して成功しています。これが私が使用しているスクリプトです:
function markArchivedAsRead() {
var threads = GmailApp.search('label:unread -label:inbox');
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
var markUnread = 1;
for (var j=0; j<messages.length; j++)
{
if (messages[j].isInInbox())
markUnread = 0;
}
if (markUnread)
threads[i].markRead();
}
};