Au cours des dernières années, il y a eu plusieurs cas où nous avons eu besoin d’extraire des informations de nos feuilles de calcul Google et dans un message Slack. Pour ce faire, nous utilisons quelques fonctions simples de script Google Apps, ainsi que l’API Slack. Dans cette vidéo, nous vous montrons comment procéder.
Transcription / instructions.
Il est juste de dire que je suis un très grand fan de Google Sheets et Apps Script. C’est dur de ne pas l’être. Ils ont la possibilité de s’intégrer à d’autres services Google, d’interroger des services externes via des modules complémentaires et des API, de partager des données entre des feuilles, d’importer des données de partout sur le Web et bien plus encore. En fait, les possibilités sont apparemment infinies.
En conséquence, nous exécutons beaucoup de choses via Google Sheets ici en août. Nous utilisons également Slack. Slack fonctionne parfaitement à la fois pour notre communication interne (extrêmement utile pendant la période de travail à domicile / COVID-19) et comme moyen de connexion et de partage d’informations rapidement et de manière transparente avec nos clients. En conséquence, au cours des dernières années, il y a eu plusieurs cas où nous avons dû extraire des informations de nos feuilles de calcul et les intégrer dans un message Slack. Pour ce faire, nous utilisons quelques fonctions simples de script Google Apps, ainsi que l’API Slack.
Voici comment procéder.
Comment envoyer des alertes Slack à partir de Google Sheets / Google Apps Script.
- Créer une application personnalisée dans Slack
- Récupérez les données de votre feuille de calcul à l’aide de Google Apps Script
- Transformez les données dans un format compréhensible par Slack
- Envoyer l’alerte à Slack
- Étape bonus: configurer des alertes planifiées
Remarque: Vous aurez besoin d’une expérience de base de Google Apps Script et / ou de JavaScript pour tout comprendre dans cet article. Si vous ne le faites pas, allez et consultez la documentation relative au script Google Apps première.
Si vous êtes prêt à commencer, passons en revue chaque étape en détail.
Étape 1: créez une application personnalisée dans Slack.
Pour commencer, assurez-vous que vous êtes connecté à votre compte Slack via votre navigateur. Une fois connecté, accédez à https://api.slack.com. Tout ce que vous devez savoir sur l’API Slack est ici.
Pour configurer votre nouvelle application personnalisée, cliquez sur « Vos applications » dans la navigation principale:
L’écran d’accueil de l’API Slack
Suivi de « Créer une nouvelle application »:
Vos applis Slack
Un modal se chargera, où vous pourrez fournir un nom pour votre application. Sélectionnez l’espace de travail de développement de votre entreprise (si vous n’êtes membre que d’une entreprise, il ne devrait y avoir qu’une seule option ici) et cliquez sur « Créer une application »:
Créer une nouvelle application Slack
Vous venez de créer une application Slack!
Cependant, il ne fait rien pour le moment … vous devez faire une dernière chose pour permettre à Google Apps Script de communiquer avec votre application, à savoir configurer quelque chose appelé «webhook». Sans entrer dans les détails, un webhook est un mécanisme qui vous permet d’envoyer des informations d’un service externe à votre application Slack.
Configurons notre webhook. Dans le menu de gauche, sélectionnez « Webhooks entrants »:
Webhooks
Activez l’option « Activer les webhooks entrants », puis cliquez sur le bouton « Ajouter un nouveau webhook à l’espace de travail »:
Ajouter votre webhook
Enfin, sélectionnez le canal Slack dans lequel vous souhaitez que l’alerte Slack apparaisse et cliquez sur « Autoriser »:
Choisir une chaîne
Pointe: Pendant que vous testez votre alerte Slack, je vous recommande de sélectionner une chaîne Slack à laquelle vous seul avez accès. Cela vous permet de jouer avec la façon dont l’alerte Slack apparaîtra et de résoudre les problèmes de présentation avant de publier votre alerte «dans la nature». Une fois que vous êtes prêt à commencer à envoyer des alertes à un canal partagé, configurez un webhook différent pour ce canal.
Votre application Slack est maintenant prête à recevoir des données d’un service externe. Jours heureux! Gardez cet onglet de navigateur ouvert, vous devrez y revenir plus tard.
Étape 2: récupérez les données de votre feuille de calcul à l’aide de Google Apps Script.
Maintenant que vous avez configuré votre application Slack, vous êtes prêt à lui envoyer des données. Pour les besoins de cet article, j’ai mis en place un simple Feuille de calcul Google avec des données factices – n’hésitez pas à faire une copie de cette feuille de calcul (assurez-vous que vous êtes connecté à un compte Google, puis allez dans Fichier> Faire une copie), ou utilisez votre propre feuille de calcul Google (c’est très bien).
Notre feuille de calcul des données sources
Nos données factices concernent un organisme de bienfaisance fictif. La feuille de calcul contient un tableau simple répertoriant les revenus de collecte de fonds pour le mois dernier. Vous souhaitez intégrer ces données dans une alerte Slack.
Une fois votre feuille de calcul prête, vous devez accéder à Google Apps Script. Pour ce faire, cliquez sur Outils> Éditeur de script:
Ouverture de l’éditeur de script
Remarque: Si vous avez copié le modèle de feuille de calcul ci-dessus, tout le code requis sera déjà en place (enfin, à l’exception de l’URL de votre webhook, que nous aborderons à l’étape 4). Si, cependant, vous partez de zéro avec votre propre feuille de calcul, l’éditeur de script sera vide et vous devrez suivre les étapes ci-dessous pour configurer les choses.
Pour commencer, donnez à votre script un nom significatif, puis remplacez la fonction vide en haut par ce qui suit:
function buildReport() {
const ss = SpreadsheetApp.getActive();
let data = ss.getSheetByName('Data').getRange("A1:B6").getValues();
let payload = buildAlert(data);
sendAlert(payload);
}
Ceci est votre fonction principale. C’est une fonction très simple que vous reconnaîtrez probablement si vous avez une expérience avec Apps Script.
Cette ligne est chargée d’obtenir les données des cellules A1: B6:
let data = ss.getSheetByName('Data').getRange("A1:B6").getValues();
Si vous utilisez votre propre feuille de calcul, mettez simplement à jour la plage pour refléter vos propres données.
Une fois que vous avez vos données, la fonction envoie ces données à une autre fonction appelée ‘buildAlert’ (dont nous parlerons à l’étape 3), puis envoie les données renvoyées de la fonction buildAlert à une autre fonction appelée ‘sendAlert’ (que nous allons parler à l’étape 4).
C’est ça. Vous avez maintenant des données, vous êtes donc prêt à commencer à transformer ces données dans le bon format.
Étape 3: Transformez les données dans un format compréhensible par Slack.
Les données que vous venez de récupérer à l’étape précédente sont au format tableau JavaScript. Vous ne pouvez pas l’envoyer à Slack dans ce format – Slack ne le comprendra pas. Au lieu de cela, il doit être converti en JSON spécialement structuré que Slack comprendra. Slack appelle cette structure ‘Blocs». La documentation de Slack est excellente, donc je ne la répéterai pas ici. Jetez simplement un coup d’œil au lien ci-dessus, puis revenez ici.
Lorsque vous êtes prêt, créons notre fonction ‘buildAlert’ qui prend nos données de l’étape 2 comme argument:
function buildAlert(data) {
let totalRevenue = data[0][1];
let revenueBreakdown = data.slice(1).map(function(row) {
return row[0] + ": $" + row[1];
}).join("n");
let payload = {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":bell: *Fundraising Revenue Report* :bell:"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Our total fundraising revenue for the past month was $" + totalRevenue
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "A breakdown of revenue by source is as follows:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": revenueBreakdown
}
}
]
};
return payload;
}
C’est une fonction légèrement plus longue que la première, alors décomposons-la. Vous voulez que votre alerte Slack ressemble à ceci:
À quoi nous voulons que notre alerte ressemble
Comme vous le verrez, notre alerte comporte 5 sections:
- Le titre de l’alerte
- Le séparateur horizontal sous le titre
- La phrase « revenu total de la collecte de fonds »
- La phrase introduisant notre répartition des revenus
- La ventilation du chiffre d’affaires lui-même
Chacun des éléments ci-dessus est représenté par un objet dans le tableau «blocks» de votre variable «payload»:
let payload = {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":bell: *Fundraising Revenue Report* :bell:"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Our total fundraising revenue for the past month was $" + totalRevenue
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "A breakdown of revenue by source is as follows:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": revenueBreakdown
}
}
]
};
Comme vous pouvez le voir, la construction de la structure d’une alerte est assez simple. Chaque section de l’alerte n’est qu’un élément du tableau ‘blocks’. Si vous souhaitez ajouter une autre section, insérez simplement un autre élément dans le tableau!
Pointe: Pantalon Constructeur de kit de blocs est un endroit génial pour expérimenter le format JSON. Jouez avec les choses là-dedans avant de configurer votre variable ‘payload’ dans Apps Script.
Vous avez peut-être remarqué que nous avons sauté quelques lignes dans notre fonction. Couvrons-les maintenant.
La première ligne de notre fonction obtient simplement votre chiffre de « revenu total » à partir de vos données, qui se trouve dans la première ligne et la deuxième colonne de notre tableau de données (en vous rappelant que les tableaux JavaScript sont basés sur zéro, c’est-à-dire que le « 0 » = ligne 1 et le «1» = colonne 2).
let totalRevenue = data[0][1];
Le bloc de code suivant prend les données restantes dans le tableau (représentant la plage A2: B6 dans la feuille de calcul) et les transforme d’un tableau en une chaîne de texte, formatée comme nous le voulons:
let revenueBreakdown = data.slice(1).map(function(row) {
return row[0] + ": $" + row[1];
}).join("n");
Pour ceux d’entre vous qui utilisent vos propres données, vous devrez peut-être jouer avec cette section de code pour que les choses se passent bien.
Étape 4: envoyez l’alerte à Slack.
L’étape 3 est probablement la partie la plus difficile, et une fois que vous avez maîtrisé cela, le reste est un jeu d’enfant. Notre fonction finale est votre fonction «sendAlert», qui – vous l’avez deviné – envoie l’alerte formatée à Slack. C’est ici:
function sendAlert(payload) {
const webhook = ""; //Paste your webhook URL here
var options = {
"method": "post",
"contentType": "application/json",
"muteHttpExceptions": true,
"payload": JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(webhook, options);
} catch(e) {
Logger.log(e);
}
}
Comme vous le verrez, sendAlert prend la charge utile que vous venez de créer à l’étape 3 comme argument. L’objet ‘options’ s’assure simplement que nous faisons le bon type de requête, dans le bon format, puis la partie ‘UrlFetchApp.fetch’ effectue la requête. Nous l’enveloppons dans un bloc try / catch, juste au cas où quelque chose ne va pas.
La seule chose que vous devez faire est de coller l’URL de votre webhook que vous avez créée à l’étape 1. Vous pouvez l’obtenir à partir de la page « Webhooks entrants » de votre application dont nous avons parlé à l’étape 1:
Obtenir l’URL de votre webhook
Une fois que vous avez collé cela dans la variable ‘webhook’, vous avez terminé! C’est tout le code dont vous avez besoin.
La dernière étape consiste à lui faire un test. Dans Apps Script, sélectionnez la fonction ‘buildReport’ dans la barre d’outils, puis cliquez sur l’icône Exécuter:
Faisons un tourbillon!
Notez que la première fois que vous effectuez cette opération, Apps Script vous demandera l’autorisation d’exécuter le script. Si vous voyez un modal qui ressemble à ceci:
Ignorer l’avertissement de sécurité
… Allez-y et cliquez sur «Avancé» suivi de «Aller à l’application Super Awesome Slack (non sécurisé)» (ou ce que vous avez appelé votre script à l’étape 2). Ne vous inquiétez pas de l’avertissement « dangereux » énervé – cette application très simple n’est pas dangereuse! Vous n’aurez également à le faire qu’une seule fois.
Une fois que vous avez accepté toutes les autorisations et que le script s’est exécuté, dirigez-vous vers Slack, et le tour est joué, l’alerte Slack devrait se trouver dans le canal que vous avez choisi à l’étape 1.
Étape bonus: configurer des alertes planifiées.
La configuration d’alertes programmées est extrêmement utile. Imaginez que vous vouliez envoyer une alerte une fois par semaine. Vous pouvez configurer un «déclencheur» dans Apps Script pour que cela se produise.
Pour configurer un déclencheur, sélectionnez « Déclencheurs du projet actuel » dans le menu Edition, puis configurez un déclencheur « Time Driven » sur la fonction « buildReport », en définissant la fréquence sur ce qui vous convient:
Ajouter un déclencheur
De toute évidence, ce serait assez inutile avec notre exemple de feuille de calcul car il ne contient que des données statiques. Mais pour ceux d’entre vous qui disposent de feuilles de calcul qui se mettent à jour de manière dynamique au fil du temps, une alerte régulière dans Slack vous informant, ainsi que votre équipe, des dernières informations pourrait être très utile. Plus de données cachées dans des feuilles – toute votre équipe a des données à portée de main, quand elle en a besoin, directement dans Slack.
***
C’est ça! J’espère que vous avez trouvé ce post utile. Attention, bon codage et bonne chance!