您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Grab links from a GitHub project column and copy them to the clipboard for easy pasting into a PR or issue description.
// ==UserScript== // @name GitHub Project Copy Column // @namespace https://github.com/scruffian/github-project-copy-column // @version 0.2 // @description Grab links from a GitHub project column and copy them to the clipboard for easy pasting into a PR or issue description. // @author Scruffian // @match https://github.com/* // @icon https://raw.githubusercontent.com/xthexder/wide-github/master/icons/icon.png // @grant none // @license GPLv2 or later // ==/UserScript== (function() { 'use strict'; const copyToClipboardHelper = ( textToCopy ) => { let finalText = textToCopy; if ( textToCopy.current ) { const parentElement = textToCopy.current.parentElement; const savedDisplay = parentElement.style.display; parentElement.style.display = 'block'; finalText = textToCopy.current.innerText.replace( /([0-9]+)/g, '\r\n$1. ' ); parentElement.style.display = savedDisplay; } const textarea = document.createElement( 'textarea' ); textarea.value = finalText; document.body.appendChild( textarea ); textarea.select(); document.execCommand( 'copy' ); textarea.remove(); }; const columns = document.querySelectorAll('div[data-board-column]'); columns.forEach( function( column ) { const titleDiv = column.querySelector( 'div > div' ); const number = column.querySelector( 'div > div [data-testid=column-items-counter]' ); let link = document.createElement('span'); number.title = 'Copy URLs of all cards'; number.onclick = function() { const scrollableArea = column.querySelector( '.column-drop-zone' ); scrollableArea.scrollTop = 0; const allLinks = []; const getLinks = setInterval(function(){ scrollableArea.scrollTop = scrollableArea.scrollTop + scrollableArea.offsetHeight; const linksForScrollPoint = column.querySelectorAll( '[data-testid=board-view-column-card] a' ); linksForScrollPoint.forEach( function( link ) { if ( link.href ) { allLinks.push( link.href ); } } ); if(scrollableArea.scrollTop + scrollableArea.offsetHeight + 1 >= scrollableArea.scrollHeight){ clearInterval(getLinks); const uniqueLinks = new Set( allLinks ); const linksString = Array.from( uniqueLinks ).join( '\n\n' ); copyToClipboardHelper( linksString ); alert( 'Copied ' + uniqueLinks.size + ' links to clipbard' ); } }, 150); }; } ); })();