Gmailのパーマリンク取得

    @@ -8,14 +8,32 @@ { - const targetDataAttribute = "data-legacy-last-message-id" + const targetDataAttributeNames = [ + "data-legacy-last-message-id", + "data-legacy-message-id", + "data-legacy-thread-id", + ] - alert('パーマリンクを取得するメールをクリック') - document.documentElement.addEventListener('click', e => { - const targetElement = (e.target.getAttributeNames().includes(targetDataAttribute)) ? - e.target : - e.target.querySelector(`[${targetDataAttribute}]`) - prompt('パーマリンク',`https://mail.google.com/mail/u/0/#all/${targetElement.getAttribute(targetDataAttribute)}`) + alert('パーマリンクを取得するメールをクリック') + console.log('test') + document.documentElement.addEventListener('click', e => { + const target = e.target; + let id; + console.log(target, targetDataAttributeNames) + for (const targetDataAttribute of targetDataAttributeNames) { + console.log(target, target.closest(`[${targetDataAttribute}]`)) + if (target.getAttributeNames().includes(targetDataAttribute)) { + id = target.getAttribute(targetDataAttribute); + break; + } + if (target.closest(`[${targetDataAttribute}]`)) { + id = target.closest(`[${targetDataAttribute}]`).getAttribute(targetDataAttribute); + break; + } + } + console.log(id) - }, { once: true }) -} + prompt('パーマリンク', `https://mail.google.com/mail/u/0/#all/${id}`) + + }, { once: true }) +}
  • /*
     * @title Gmailのパーマリンク取得
     * @description ブックマークレットを使ってからメールスレッドやタイトルなどをクリックしてください
     * @include https://mail.google.com/
     * @license CC0
     * @javascript_url
     */
    
    
    {
      const targetDataAttributeNames = [
        "data-legacy-last-message-id",
        "data-legacy-message-id",
        "data-legacy-thread-id",
      ]
    
      alert('パーマリンクを取得するメールをクリック')
      console.log('test')
      document.documentElement.addEventListener('click', e => {
        const target = e.target;
        let id;
        console.log(target, targetDataAttributeNames)
        for (const targetDataAttribute of targetDataAttributeNames) {
          console.log(target, target.closest(`[${targetDataAttribute}]`))
          if (target.getAttributeNames().includes(targetDataAttribute)) {
            id = target.getAttribute(targetDataAttribute);
            break;
          }
          if (target.closest(`[${targetDataAttribute}]`)) {
            id = target.closest(`[${targetDataAttribute}]`).getAttribute(targetDataAttribute);
            break;
          }
        }
        console.log(id)
    
        prompt('パーマリンク', `https://mail.google.com/mail/u/0/#all/${id}`)
    
      }, { once: true })
    }
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2023/12/19 18:52:57 - 2023-12-19
  2. 2023/12/19 18:52:18 - 2023-12-19
  3. 2023/12/05 17:47:46 - 2023-12-05
  4. 2023/01/27 17:05:47 - 2023-01-27