Gmailのパーマリンク取得

    @@ -22,8 +22,6 @@ const e = await waitForEvent(document, 'mousedown') targetElement = e.target.closest(`[${targetDataAttributeName}]`) ?? targetElement; - // console.log(e.target) - // console.log(targetElement) const threadId = BigInt(targetElement?.getAttribute(targetDataAttributeName).split(':')[1]).toString(16) navigator.clipboard.writeText(`https://mail.google.com/mail/u/0/#all/${encodeURIComponent(threadId)}`) .then(() => alert("メールのパーマリンクをクリップボードにコピーしました"))
  • /*
     * @title Gmailのパーマリンク取得
     * @description メールを開いてブックマークレットを使ってからページをクリックすると、メールのパーマリンクをクリップボードにコピーします。
     * @include https://mail.google.com/
     * @license CC0
     * @javascript_url
     */
    
    // HTML構造変わるの早い……
    
    (async () => {
        const targetDataAttributeName = "data-message-id"
        const waitForEvent = (eventTarget, eventType) => new Promise((resolve, reject) =>
            eventTarget.addEventListener(eventType, resolve, { once: true, signal: AbortSignal.timeout(10000) })
        )
    
        let targetElement = document.querySelector(`[${targetDataAttributeName}]`);
        if (!targetElement) {
            alert("メールを開いてからブックマークレットを使ってください")
            return
        }
    
        const e = await waitForEvent(document, 'mousedown')
        targetElement = e.target.closest(`[${targetDataAttributeName}]`) ?? targetElement;
        const threadId = BigInt(targetElement?.getAttribute(targetDataAttributeName).split(':')[1]).toString(16)
        navigator.clipboard.writeText(`https://mail.google.com/mail/u/0/#all/${encodeURIComponent(threadId)}`)
            .then(() => alert("メールのパーマリンクをクリップボードにコピーしました"))
            .catch(err => {
                console.error("クリップボードへのコピーに失敗しました", err)
                alert("クリップボードへのコピーに失敗しました")
            });
    
    })()
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。