Excel non può accorciare un URL con una formula. WEBSERVICE invia una richiesta GET senza intestazioni e senza corpo, mentre una moderna API per shortener richiede una POST con un'intestazione Authorization e JSON. Inoltre è disponibile solo su Windows. Ogni tutorial basato su formule che trovi usa un servizio che accettava l'URL lungo come parametro di query, e quei servizi non esistono più.
La vera domanda, quindi, è quale dei tre metodi funzionanti si adatti al tuo foglio: uno script Office Script, un flusso Power Automate o un'importazione bulk con copia e incolla. La risposta dipende quasi interamente dalla frequenza con cui deve essere eseguito il foglio.
Metodo uno: uno script Office Script
Office Scripts eseguono TypeScript sulla cartella di lavoro e possono chiamare un'API esterna con fetch. È il metodo adatto a un foglio che apri ed esegui manualmente.
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const rows = sheet.getUsedRange().getValues();
for (let i = 1; i < rows.length; i++) {
const destination = String(rows[i][0]);
if (!destination || rows[i][1]) continue; // skip blanks and already-done rows
const response = await fetch("https://api.elido.app/v1/links", {
method: "POST",
headers: {
Authorization:
"Bearer " + workbook.getWorksheet("Config").getRange("B1").getText(),
"Content-Type": "application/json",
"Idempotency-Key": destination, // stable per row, so a re-run creates nothing
},
body: JSON.stringify({ destination_url: destination }),
});
const link = (await response.json()) as { short_url: string };
sheet.getCell(i, 1).setValue(link.short_url);
}
}
Tre vincoli emergono in quest'ordine.
Il principale è questo: le chiamate fetch esterne funzionano quando lo script viene eseguito in Excel e non quando lo esegue Power Automate. Uno script che funziona perfettamente dalla scheda Automate fallisce con fetch is not defined nel momento in cui lo attiva un flusso, e questa sorpresa è costata un pomeriggio a molte persone.
Non esistono né un archivio dei segreti né un flusso OAuth, quindi la chiave si trova nello script o in una cella. Leggerla da un foglio Config, come sopra, è leggermente meglio perché puoi condividere lo script senza la chiave, ma la cartella di lavoro stessa diventa una credenziale.
Inoltre, l'API di destinazione deve consentire la chiamata dall'origine dello script. La documentazione di Office Scripts indica un requisito CORS per le risorse esterne, che la maggior parte delle API pubbliche soddisfa e alcune API interne no.
La riga if (rows[i][1]) continue è ciò che rende sicuro eseguire lo script due volte: le righe che hanno già uno short link vengono saltate e la chiave di idempotenza copre le altre.
Metodo due: un flusso Power Automate
Per qualsiasi attività pianificata, un flusso è la risposta corretta, perché viene eseguito indipendentemente dal fatto che qualcuno abbia aperto la cartella di lavoro.
La struttura è questa: un trigger di ricorrenza o di file, List rows present in a table dal connettore Excel, un'azione apply-to-each con l'azione HTTP che esegue una POST all'endpoint dei link, poi Update a row per riscrivere lo short link.
Prima di configurarlo devi sapere due cose. L'azione HTTP generica è un connettore premium, quindi questo metodo dipende dalla tua licenza, non dalla tua abilità. Inoltre il flusso può memorizzare la chiave API in un input sicuro o recuperarla da Azure Key Vault: è un miglioramento reale rispetto al metodo Office Script, perché la credenziale smette di vivere in un file che le persone si inviano via email.
Se il flusso elaborerà centinaia di righe, aggiungi un limite di concorrenza all'azione apply-to-each. La distribuzione parallela predefinita è abbastanza ampia da far scattare un limite di frequenza dell'API, e la correzione consiste in una sola impostazione, non in una riprogettazione.
Metodo tre: esporta, importa in bulk, incolla di nuovo
Per un'esecuzione occasionale, questo metodo è più veloce dei due precedenti. Esporta la colonna delle destinazioni in CSV, passala attraverso l'importazione bulk dello shortener, scarica il risultato e incolla gli short link di nuovo accanto agli originali.
Nessun connettore premium, nessuna chiave in una cartella di lavoro e nessuno script da mantenere. La guida all'importazione bulk da Google Sheets descrive il formato del file, che è lo stesso indipendentemente dal foglio di calcolo che lo ha prodotto, mentre la generazione bulk di codici QR descrive il caso in cui ogni riga debba avere anche un codice stampabile.
La regola per decidere è semplice. Una volta significa incolla. Ogni lunedì significa flusso. Ogni volta che qualcuno apre la cartella di lavoro significa Office Script.
Vuoi provare prima il metodo con copia e incolla? Crea un account con il piano gratuito, importa un CSV di cinque righe e verifica se vale davvero la pena creare l'automazione.
Perché una formula sarebbe comunque sbagliata
Supponiamo che WEBSERVICE potesse eseguire POST. Sarebbe comunque lo strumento sbagliato, perché le formule ricalcolano secondo il programma di Excel, non secondo il tuo. Apri la cartella di lavoro e ogni riga invia di nuovo la propria richiesta. Senza una chiave di idempotenza creeresti un link duplicato per riga a ogni apertura; con una chiave avresti solo un picco di traffico inutile che consuma il tuo limite di frequenza.
Qualsiasi operazione che crea una risorsa appartiene al codice che viene eseguito quando lo decidi tu, non a una cella che ricalcola quando l'applicazione ne ha voglia. È una lezione utile anche oltre questo caso: è la stessa ragione per cui ci si scotta inserendo RAND() o NOW() in un foglio che alimenta un report.
Riportare il risultato nel foglio
Qualunque metodo tu scelga, scrivi quattro colonne, non due: l'URL originale, lo short link, lo slug e un messaggio di stato o di errore. Un'esecuzione interrotta a metà sarà quindi evidente e ripetibile, invece di lasciare una colonna con lacune silenziose.
Conserva il file. Quando tra tre mesi qualcuno chiederà quale link è stato inserito in quale mailing, il foglio sarà la risposta, e ricostruirlo dalla dashboard richiederà più lavoro che conservarlo. Se accanto agli stessi link ti servono i dati sui clic, come monitorare i clic sui link descrive la parte relativa all'esportazione.
Leggi la serie principale
Questo articolo appartiene al cluster engineering. Inizia dalla guida gratuita all'API per URL shortener per la struttura della richiesta, poi passa a limiti di frequenza e idempotenza per gestire correttamente un ciclo. Per la versione PowerShell dello stesso lavoro con CSV, consulta come accorciare un URL in PowerShell.
Correlati sul blog
Domande frequenti
Posso accorciare un URL con una formula di Excel?
Non con una moderna API per shortener. WEBSERVICE invia una richiesta GET senza intestazioni, quindi non può autenticarsi né inviare un corpo JSON, ed è disponibile solo su Windows. Qualsiasi tutorial che mostra uno shortener basato su formule usa un vecchio servizio che accettava l'URL lungo come parametro di query. Quei servizi non esistono più.
Come faccio allora ad accorciare gli URL in Excel?
Funzionano tre metodi: uno script Office Script con fetch per un'esecuzione occasionale dentro l'app, un flusso Power Automate con l'azione HTTP per tutto ciò che è pianificato, oppure l'esportazione della colonna in CSV e un'importazione bulk. Scegli in base alla frequenza con cui deve essere eseguito il foglio, non in base a ciò che sembra più ingegnoso.
Perché fetch non funziona nel mio Office Script quando lo esegue Power Automate?
Perché le chiamate fetch esterne non sono disponibili nel runtime di Power Automate, ma solo quando lo script viene eseguito direttamente in Excel. Lo script che funziona dalla scheda Automate nell'app fallisce con fetch is not defined quando lo attiva un flusso: è la sorpresa più comune in questo scenario.
Office Scripts supporta OAuth o la memorizzazione dei segreti?
No. Non esistono né un flusso di accesso né un archivio dei segreti, quindi una chiave deve essere inserita direttamente nello script oppure letta da una cella. Tratta qualsiasi cartella di lavoro che contiene quello script come una credenziale: non condividerla ampiamente e usa una chiave limitata alla creazione di link.
Come posso evitare di creare link duplicati ogni volta che il foglio ricalcola?
Invia una chiave di idempotenza derivata dall'URL di destinazione, così una richiesta ripetuta restituisce il link esistente invece di crearne uno nuovo. È anche per questo che una formula sarebbe lo strumento sbagliato, persino se potesse eseguire POST: le formule ricalcolano secondo il proprio programma e creerebbero link a ogni esecuzione.
Qual è il modo più veloce per accorciare una volta sola qualche centinaio di righe?
Esporta la colonna in CSV e usa l'importazione bulk dello shortener, poi incolla gli short link restituiti accanto agli originali. Nessun codice, nessun connettore premium e bastano un paio di minuti. Automatizza solo quando lo stesso lavoro si ripete secondo una pianificazione.
Prova Elido
Incolla un URL, ottieni un link breve
Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.
Gratis, nessuna registrazione richiesta · 2 al giorno