勉強会に参加したことのある方ならご存知のconnpass。
いろんなイベントに参加することができて非常に便利です。
が、最近あまりにメールが多い。
今後connpass.comからこのようなメールを受け取りたくない場合は、利用設定から配信停止することができます。
ということなので、利用設定からメール通知設定画面に飛んだところ……
僕は嫌だ!!!
ということで、JSでconnpassのメール通知設定用の関数を書きました。
コード
function mailSelect(type, isCheck) {
switch (type) {
case "all":
window.document.querySelectorAll("input[name^='group_notify_group_email-']").forEach(selectBox =>
selectBox.checked = isCheck
)
break
case "kokai":
window.document.querySelectorAll("input[name$='-event_publish_to_series_watcher']").forEach(selectBox =>
selectBox.checked = isCheck
)
break
case "bosyu":
window.document.querySelectorAll("input[name$='-event_open_start_to_group_member']").forEach(selectBox =>
selectBox.checked = isCheck
)
break
case "shiryo":
window.document.querySelectorAll("input[name$='-new_event_links_to_group_member']").forEach(selectBox =>
selectBox.checked = isCheck
)
break
}
}
使い方
- https://connpass.com/settings/ を開く
- 検証ツールを開きます。
- Consoleを開きます。
- 上記のコードをコピペします。
- コマンドを打ちます。
mailSelect("all", false)
mailSelect("kokai", false)
mailSelect("bosyu", true)
mailSelect("shiryo", false)
こんな感じで使えます。
メールを送るな!という人はmailSelect("all", false)
でおk。
ブックマークレットにしてみた
ブックマークレットは即時関数なので、決め打ちです。
ブックマークレット作成で簡単にブックマークレットの形式に変換できます。
javascript:(function(){window.document.querySelectorAll("input[name^='group_notify_group_email-']").forEach(selectBox=>selectBox.checked=false)})();void(0);
connpassの設定ページを開いた状態で、↑をアドレスバーにコピペします(コピペするとjavascript:
が消えるので手打ちする)。
そしてエンター、以上!!
知ったこと
getElementsByName
では完全一致しか取得できないんですね。
querySelector
を使うと、前方一致や後方一致のようなことができるようです。
DOMをセレクトするときに正規表現的な文法をつかう - みかづきブログ その3
Document.querySelectorAll() - Web API | MDN