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.

YouTube video

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.

Publicité

Comment envoyer des alertes Slack à partir de Google Sheets / Google Apps Script.

  1. Créer une application personnalisée dans Slack
  2. Récupérez les données de votre feuille de calcul à l’aide de Google Apps Script
  3. Transformez les données dans un format compréhensible par Slack
  4. Envoyer l’alerte à Slack
  5. É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:

Step1A Slack Api Home Screen

L’écran d’accueil de l’API Slack

Suivi de « Créer une nouvelle application »:

Step1B Slack Api Your Apps

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  »:

Step1C Slack Api Create App Modal

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 »:

Step1D Slack Incoming Webhooks Menu Item

Webhooks

Activez l’option « Activer les webhooks entrants », puis cliquez sur le bouton « Ajouter un nouveau webhook à l’espace de travail »:

Step1E Slack Add New Webhook Button

Ajouter votre webhook

Enfin, sélectionnez le canal Slack dans lequel vous souhaitez que l’alerte Slack apparaisse et cliquez sur « Autoriser »:

Step1F Slack App Permissions

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).

Step2A Spreadsheet Data

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:

Step2B Accessing The Script Editor

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:

Step3A Slack Alert Format

À quoi nous voulons que notre alerte ressemble

Comme vous le verrez, notre alerte comporte 5 sections:

  1. Le titre de l’alerte
  2. Le séparateur horizontal sous le titre
  3. La phrase «  revenu total de la collecte de fonds  »
  4. La phrase introduisant notre répartition des revenus
  5. 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:

Step4A Slack Webhook Url

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:

Step4B Running The Script

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:

Step4C Google App Permissions Verification

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:

Step5B Current Triggers Menu Item

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!

Rate this post
Publicité
Article précédentPokemon Sword And Shield Codes Zarude envoyés aux États-Unis
Article suivant13 choses que nous avons aimées ce week-end: Messi, Moukoko, Fernandes, Mane et plus
Avatar
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici