您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add download link to SharePoint list items that contain links to files
// ==UserScript== // @name SharePoint list download link // @namespace http://tampermonkey.net/ // @version 0.1.3 // @description Add download link to SharePoint list items that contain links to files // @author apple-phi // @match *://*/*.aspx* // @grant none // @license MIT; https://opensource.org/licenses/MIT // @run-at document-start // ==/UserScript== "use strict"; (async () => { const { BlobWriter, HttpReader, ZipWriter } = await import( "https://unpkg.com/@zip.js/zip.js/index.js" ); for (const table of document.querySelectorAll( "table:has(> tbody > tr > td.ms-vb-title > .ms-vb.itx > a[href])" )) { const availableFiles = table.querySelectorAll( "td.ms-vb-title > .ms-vb.itx > a[href]" ); let anchor = document.createElement("a"); anchor.href = "#"; anchor.textContent = `Zipped 0 of ${availableFiles.length} files`; table.closest("div").prepend(anchor); let progress = 0; const zipWriter = new ZipWriter(new BlobWriter("application/zip")); async function addFileToZip(link) { const absUrl = new URL(link, window.location.origin).href; const segments = absUrl.split("/"); const filename = segments.pop() || segments.pop(); await zipWriter.add(decodeURIComponent(filename), new HttpReader(absUrl)); progress++; anchor.textContent = `Zipped ${progress} of ${availableFiles.length} files`; } await Promise.all( [...availableFiles].map((a) => a.getAttribute("href")).map(addFileToZip) ).then(async () => { anchor.textContent = "Download zip file"; anchor.href = URL.createObjectURL(await zipWriter.close()); anchor.download = `${ document.querySelector("span.ms-sitemapdirectional").textContent || "download" }.zip`; }); } })();