Excel ne peut pas raccourcir une URL avec une formule. WEBSERVICE envoie une requête GET sans en-têtes ni corps, tandis que l'API d'un raccourcisseur moderne a besoin d'une requête POST avec un en-tête Authorization et du JSON. Elle est également limitée à Windows. Tous les tutoriels fondés sur une formule que vous trouverez reposent sur un service qui acceptait l'URL longue comme paramètre de requête, et ces services ont disparu.
La vraie question est donc de savoir laquelle des trois méthodes qui fonctionnent convient à votre feuille : un Office Script, un flux Power Automate ou un import en masse avec copier-coller. La réponse dépend presque entièrement de la fréquence d'exécution de la feuille.
Première méthode : un Office Script
Les Office Scripts exécutent du TypeScript sur le classeur et peuvent appeler une API externe avec fetch. C'est la méthode adaptée à une feuille que vous ouvrez et exécutez manuellement.
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);
}
}
Trois contraintes se présentent dans cet ordre.
La principale : les appels fetch externes fonctionnent quand le script s'exécute dans Excel et pas quand Power Automate l'exécute. Un script qui fonctionne parfaitement depuis l'onglet Automate échoue avec fetch is not defined dès qu'un flux le déclenche, et cette surprise a coûté un après-midi à beaucoup de personnes.
Il n'y a ni stockage de secrets ni flux OAuth : la clé se trouve donc dans le script ou dans une cellule. La lire depuis une feuille Config, comme ci-dessus, est légèrement préférable, car le script peut être partagé sans la clé, mais le classeur lui-même devient alors un identifiant.
L'API cible doit également autoriser l'appel depuis l'origine du script. La documentation d'Office Scripts impose une exigence CORS pour les ressources externes, à laquelle la plupart des API publiques satisfont, contrairement à certaines API internes.
C'est la ligne if (rows[i][1]) continue qui permet d'exécuter le script deux fois sans risque : les lignes qui ont déjà un lien court sont ignorées et la clé d'idempotence couvre les autres.
Deuxième méthode : un flux Power Automate
Pour tout ce qui doit suivre un calendrier, un flux est la réponse la plus fiable, car il s'exécute que le classeur soit ouvert ou non.
La structure est la suivante : un déclencheur de récurrence ou de fichier, List rows present in a table du connecteur Excel, une boucle apply-to-each avec l'action HTTP qui envoie une requête POST au point de terminaison des liens, puis Update a row pour réécrire le lien court.
Deux choses sont à savoir avant de le construire. L'action HTTP générique est un connecteur premium : cette méthode dépend donc de votre licence, pas de vos compétences. Le flux peut aussi stocker la clé API dans une entrée sécurisée ou la récupérer depuis Azure Key Vault, ce qui constitue une vraie amélioration par rapport à la méthode Office Script : l'identifiant ne reste plus dans un fichier que les utilisateurs s'envoient par e-mail.
Si le flux doit traiter des centaines de lignes, ajoutez une limite de concurrence à la boucle apply-to-each. Le traitement parallèle par défaut suffit à déclencher une limite de débit de l'API, et la correction tient à un seul réglage plutôt qu'à une refonte.
Troisième méthode : exporter, importer en masse, recoller
Pour une opération ponctuelle, cette méthode est plus rapide que les deux précédentes. Exportez la colonne de destinations en CSV, faites-la passer par l'import en masse du raccourcisseur, téléchargez le résultat, puis collez les liens courts à côté des liens d'origine.
Pas de connecteur premium, pas de clé dans un classeur, pas de script à maintenir. Le guide de l'import en masse depuis Google Sheets couvre le format de fichier, identique quelle que soit la feuille de calcul qui l'a produit, et la génération en masse de codes QR couvre le cas où chaque ligne doit également contenir un code imprimable.
La règle de décision est simple. Une fois, c'est un copier-coller. Tous les lundis, c'est un flux. À chaque ouverture du classeur, c'est un Office Script.
Vous voulez commencer par la méthode du copier-coller ? Créez un compte avec le forfait gratuit, importez un CSV de cinq lignes et vérifiez si l'automatisation mérite vraiment d'être construite.
Pourquoi une formule resterait le mauvais choix
Supposons que WEBSERVICE puisse envoyer une requête POST. Ce serait tout de même le mauvais outil, car les formules se recalculent selon le calendrier d'Excel et non le vôtre. Ouvrez le classeur et chaque ligne envoie à nouveau sa requête. Sans clé d'idempotence, cela crée un lien en double par ligne et par ouverture ; avec une clé, ce n'est qu'une salve de trafic inutile qui consomme votre limite de débit.
Tout ce qui crée une ressource doit se trouver dans du code qui s'exécute quand vous le décidez, pas dans une cellule qui se recalcule quand l'application en a envie. Il vaut la peine de retenir ce principe au-delà de ce cas précis : c'est la même raison pour laquelle on se fait piéger en plaçant RAND() ou NOW() dans une feuille qui alimente un rapport.
Récupérer le résultat dans la feuille
Quelle que soit la méthode choisie, écrivez quatre colonnes, pas deux : l'URL d'origine, le lien court, le slug et un message d'état ou d'erreur. Une exécution interrompue en cours de route devient alors évidente et peut être relancée, au lieu de laisser une colonne avec des trous silencieux.
Conservez le fichier. Dans trois mois, quand quelqu'un demandera quel lien a été utilisé dans quel publipostage, la feuille aura la réponse, et le reconstruire depuis le tableau de bord demandera plus de travail que de la conserver. Si les mêmes liens doivent être accompagnés de données de clics, comment suivre les clics sur les liens couvre la partie export.
Lire la série de référence
Cet article fait partie du cluster engineering. Commencez par le guide gratuit de l'API de raccourcissement d'URL pour la structure des requêtes, puis consultez limites de débit et idempotence pour bien vous comporter dans une boucle. Pour la version PowerShell de la même tâche CSV, consultez comment raccourcir une URL dans PowerShell.
À lire sur le blog
Questions fréquentes
Puis-je raccourcir une URL avec une formule Excel ?
Pas avec l'API d'un raccourcisseur moderne. WEBSERVICE envoie une requête GET sans en-têtes, donc elle ne peut ni s'authentifier ni envoyer un corps JSON, et elle est limitée à Windows. Les tutoriels qui montrent un raccourcisseur basé sur une formule utilisent un ancien service qui acceptait l'URL longue comme paramètre de requête.
Comment raccourcir des URLs dans Excel, alors ?
Trois méthodes fonctionnent : un Office Script avec fetch pour une exécution ponctuelle dans l'application, un flux Power Automate avec l'action HTTP pour tout ce qui est planifié, ou l'export de la colonne en CSV suivi d'un import en masse. Choisissez selon la fréquence d'exécution de la feuille, plutôt que selon la méthode qui semble la plus astucieuse.
Pourquoi fetch échoue-t-il dans mon Office Script quand Power Automate l'exécute ?
Parce que les appels fetch externes ne sont pas disponibles dans l'environnement d'exécution de Power Automate, uniquement quand le script s'exécute dans Excel lui-même. Le script qui fonctionne depuis l'onglet Automate de l'application échoue avec fetch is not defined dès qu'un flux le déclenche, ce qui est la surprise la plus fréquente ici.
Office Scripts prend-il en charge OAuth ou le stockage de secrets ?
Non. Il n'y a ni flux de connexion ni stockage de secrets : une clé doit donc être inscrite en dur dans le script ou lue depuis une cellule. Traitez tout classeur contenant ce script comme un identifiant : ne le partagez pas largement et utilisez une clé limitée à la création de liens.
Comment éviter de créer des liens en double à chaque recalcul de la feuille ?
Envoyez une clé d'idempotence dérivée de l'URL de destination afin qu'une requête répétée renvoie le lien existant plutôt qu'un nouveau lien. C'est aussi pourquoi une formule serait le mauvais outil même si elle pouvait envoyer une requête POST : les formules se recalculent selon leur propre calendrier et créeraient des liens à chaque fois.
Quelle est la méthode la plus rapide pour raccourcir quelques centaines de lignes une seule fois ?
Exportez la colonne en CSV et utilisez l'import en masse du raccourcisseur, puis collez les liens courts renvoyés à côté des liens d'origine. Aucun code, aucun connecteur premium, et l'opération prend quelques minutes. Automatisez uniquement lorsque la même tâche se répète selon un calendrier.
Essayer Elido
Collez une URL, obtenez un lien court
Sans inscription. Lien actif 30 jours. Inscrivez-vous pour le garder pour toujours.
Gratuit, sans inscription · 2 par jour