Si vous utilisez Taskworld et que vous êtes également friand de domotique, vous vous êtes peut-être déjà demandé s’il était possible de faire correspondre une Google Home avec votre espace de travail.

C’est ce que se propose de faire cet article !

 

 

Mise en place

Pour cet article, nous allons partir de la création d’un nouveau projet vierge, que vous pourrez adapter à votre propre organisation.

Ce projet va comprendre 2 listes de tâches : “From Google Home” et “Tasklist #1”.

En parallèle de cela, nous allons créer un document Google Sheet (dans notre cas, il s’intitule GoogleHomeApi) auquel nous allons assigner un script via : outil → éditeur de script (pour nous, il est nommé ScriptTaskworld).

Nous voilà donc prêt à commencer.

Notre projet vierge

La Google Sheet vierge

Le fichier de scripts prêt à être rempli

 

Mettre à jour le projet via l’API

Pour bien commencer, la première chose à faire va être de récupérer les informations de la liste de tâche à mettre à jour. Pour cela, il va nous falloir utiliser l’API pour nous connecter à l’espace de travail, puis retrouver les informations du projet, et enfin celle de la liste de tâches. Nous allons nous aider de la documentation de Taskworld accessible ici : http://api-docs.taskworld.com

  1. S’identifier

Nous allons utiliser la fonction authentication de l’API de Taskworld afin de nous identifier et de récupérer notre token d’accès. Ce token va nous permettre d’accéder aux projets et d’obtenir les informations dont nous allons avoir besoin par la suite.

Attention : un grand nombre de fonctionnalités de l’API sont réservés aux administrateurs de l’espace de travail.

https://api-docs.taskworld.com/#authentication

 

Concrètement, ça donne cela :

function authentication() {
    var url = "https://api.taskworld.com/v1/auth";
  
  var payload =
      {
        "email": "xxxxxxx@yyyy.zz",
        "password": "xxxxxxx",
      };
  
  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };
  
  var result = UrlFetchApp.fetch(url, options);
  Logger.log(result);  
}

Le payload contient vos informations de connexion. Pour la clarté de cet article, nous mettons toutes les fonctions dans le même script. En réalité, il est beaucoup plus prudent de récupérer ces informations dans un autre fichier que vous n’exécutez qu’une seule fois.

Vous pouvez lancer la fonction !

Note : la première fois que vous allez exécuter la fonction, Google va vous demander une autorisation. Vous devez accepter que le service se connecte afin de pouvoir utiliser l’API par ce biais.

 

Normalement, il ne s’est rien passé. Enfin presque. Si vous cliquez sur “Afficher” puis sur “Journaux” vous devriez voir ce que l’API a répondu à votre requête. Concrètement, il doit s’agir d’un message ressemblant à celui-ci :

[18-12-31 11:44:13:412 CET] {"ok":true,"access_token":"00xx00xxxxxx0x2x0xxxxxxx000000000xxxxxxxx0x0x","default_space_id":"00xx00xx00xxx00","workspaces":["xxx0000xxx0000xxx0000","xxxx0000xxxx00000xxx0"]}

Le journal nous indique les informations renvoyées par l’API

Notons précieusement ces informations, elles sont nécessaires pour la suite. La plupart du temps, vous n’avez qu’un seul espace de travail, qui est le même que votre “default Space ID”.

2. Trouver le bon projet et la bonne liste de tâche

Maintenant que nous avons de quoi nous identifier et accéder à notre espace de travail, il va falloir retrouver l’endroit où nous souhaitons publier nos tâches. Pour cela, nous allons identifier l’ID du projet en récupérant tous les projets de notre espace de travail et en isolant le bon. Utilisons “Get all projects” et voyons ce que l’API nous répond lorsque nous exécutons cette fonction.

function getallprojects() {
  var url = "https://api.taskworld.com/v1/project.get-all";
  
  var payload =
      {
        "access_token": "xxxxxxxx",
        "space_id": "xxxxxxxxx",
      };
 
  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };
  
  var result = UrlFetchApp.fetch(url, options);
  Logger.log(result);
}

Vous devez bien sûr utiliser l’access_token et le space_id que nous avons précieusement conservés lors de l’étape précédente. Le journal nous fournira à nouveau toutes les informations renvoyées par l’API.

À ce stade, je vous conseille d’utiliser un outil tel que Json formatter pour mettre en forme les réponses affichées dans le journal. Vous gagnerez du temps et éviterez plus facilement les erreurs.

Pour chaque projet présent dans l’espace de travail, nous recevons les informations suivantes :

  • project_id : l’ID du projet
  • space_id : l’id de l’espace de travail
  • owner_id : l’id du membre qui est propriétaire du projet
  • title : le nom du projet
  • description : la description du projet (vide s’il n’y en a pas)
  • members : les ID des membres du projet ainsi que le statut administrateur (is_admin : true ou is_admin : false)
  • is_private : l’accessibilité publique du projet (true ou false)
  • created : la date de création du projet
  • updated : la date de la dernière modification du projet
[18-12-31 12:03:08:038 CET] {"ok":true,"projects":[{"project_id":"xxx123xxx","space_id":"xxxx12345xxxx","owner_id":"yyy2222yyy","title":"API & Google Home ","description":"","members":[{"_id":"yyy2222yyy","is_admin":true}],"is_private":true,"created":"2018-12-31T10:20:16.792Z","updated":"2018-12-31T10:20:33.295Z"}]}

Il vous suffit ici de retrouver votre projet et de noter son project_id (vous avez récupéré le space_id précédemment)

Pour retrouver notre liste de tâches, nous allons pouvoir faire la même chose en remplaçant “Get all projects” par “Get all tasklists”.

function gettasklist() { 

  var url = "https://api.taskworld.com/v1/tasklist.get-all";
  
  var payload =
      {
        "access_token": "xxx123xxx",
        "space_id": "5xxxx23", 
        "project_id": "xxxx123Xxxxx",
      };
  
  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };
  
  var result = UrlFetchApp.fetch(url, options);
  Logger.log(result);
}

Pour chaque liste de tâches dans l’espace de travail, nous recevons les informations suivantes :

  • list_id : l’ID de la liste de tâche
  • owner_id : l’id du créateur de la liste de tâche
  • space_id : l’id de l’espace de travail
  • project_id :l’id du projet
  • title : le titre de la liste
  • is_deleted : le statut de la liste (true ou false)
  • tasks : les informations sur les tâches contenues dans la liste
  • created : la date de création de la liste
  • updated : la date de la dernière modification de la liste
[18-12-31 12:22:06:783 CET] {"ok":true,"tasklists":[{"list_id":"xxx123xxx","owner_id":"xxx123xxx","space_id":"xxx123xxxd","project_id":"5cvxxx123xxx13","title":"Tasklist #1","is_deleted":false,"tasks":[],"type":0,"created":"2018-12-31T10:20:33.291Z","updated":"2018-12-31T10:20:33.291Z","is_private":true,"is_inbox":false},{"list_id":"5cxxx123xxx","owner_id":"xxx123xxxe9b57","space_id":"5xxx123xxxd","project_id":"5xxx123xxx3","title":"From Google Home","is_deleted":false,"tasks":[],"type":0,"created":"2018-12-31T10:20:27.539Z","updated":"2018-12-31T10:20:27.539Z","is_private":true,"is_inbox":false}]}

Nous avons désormais toutes les informations dont nous avons besoin pour ajouter des tâches à la liste de tâche.

Récapitulons, nous avons récupéré :

  • Notre token d’authentifications pour accéder à l’API
  • L’id de notre espace de travail
  • L’id de notre projet
  • L’id de notre liste de tâche

Il est temps de passer aux choses sérieuses !

 

3. Ajouter une tâche via l’API

Voyons maintenant comment créer une tâche dans notre liste de tâche. Nous allons simplement créer une tâche intitulée “Hello world!” pour nous assurer que tout fonctionne.

function createtask() {
 
  var url ="https://api.taskworld.com/v1/task.create";
  
  var payload =
      {
        "access_token": "xxx123xxxx",
        "space_id": "5bxxx123xxxx9d", 
        "project_id": "5xxx123xxxx3",
        "list_id": "xxx123xxxxec684c5",
        "title" : "Hello world!",
      };
  
  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };
  
  var result = UrlFetchApp.fetch(url, options);
    Logger.log(result);
}

Ce qui nous donne cela :

Félicitations, vous venez de créer votre première tâche en utilisant l’API de taskworld ;).

 

Ajouter une tâche via Google Home

Pour ajouter une tâche via Google Home, c’est très simple, nous allons simplement utiliser IFTTT pour relier notre assistant Google (celui là même qui se cache dans notre Google Home) avec notre document Google Sheet.

Commencez par vous créer un compte / vous connecter à IFTTT. Pensez bien à utiliser le même compte que celui qui a servit à votre Google Sheet et qui sert à votre Google Home.

Nous allons donc créer un applet avec les paramètres suivants :

  • IF →  Google Assistant puis “Phrase avec ingrédient”

Vous pouvez ici choisir ce que vous voulez dire à Google, sachant que le “$” sera le nom de la tâche. Je vous conseille vivement de rester très simple (“Ajoute une tâche $” est largement suffisant par exemple).

Ensuite, vous configurerez la réponse de votre assistant Google à votre requête.

Pensez à choisir “Français” comme langue.

  • Then →  Google sheet puis “mettre à jour une cellule”

Vous allez alors indiquer l’endroit ou se situe votre fichier dans votre drive, ainsi que le nom de ce fichier. Dans notre exemple, le fichier se trouve dans le dossier IFTTT de notre drive. Indiquez la cellule à modifier (dans notre exemple il s’agira de la cellule A2). Enfin, dans le champs value, vous pouvez laisser l’ingredient “Text field”

Essayez maintenant de demander à Google Home d’ajouter une tâche pour voir si votre Google Sheet est bien mis à jour !

Maintenant que nous avons réussit à mettre à jour notre fichier avec un nom de tâche, nous n’avons plus qu’a récupérer ce nom de tâche pour créer une tâche via l’API.

 

Cela dit, si ce n’était que ça, nous aurions tout aussi bien pu créer une tâche par email via la Google Home.

L’idée ici étant de garder en mémoire dans notre fichier les différentes tâches qui ont été crées.

Commençons par un peu de mise en forme :

  • La cellule A1 va nous indiquer “Dernière tâche”
  • Les cellules D3 et E3 vont être fusionnées pour créer “Liste des tâches”
  • D4 va indiquer “Date”
  • E4 va indiquer “Tâche”
  • D5:E…” vont servir à lister les tâches crées
  • On appliquera un format de date aux cellules D5:D…
  • On rajoutera quelques fonds pour faire ressortir les titres, selon ses goûts

 

On devrait obtenir quelque chose qui ressemble à ça

Maintenant l’idée est la suivante : à chaque fois que la colonne A2 sera modifiée par une requête via Google Home, on mettra à jour le tableau au moment de créer la tâche.

Il nous suffit juste de :

  • récupérer la date du jour
  • récupérer le contenu de la cellule A2
  • trouver la première cellule vide de la colonne D et y inscrire la date
  • trouver la première cellule vide de la colonne E et y inscrire le contenu de la cellule A2

 

function updateDoc() {
  
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy");
  var input = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange("A2:A2").getCell(1, 1);
  
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getLastRow();
  
  SpreadsheetApp.getActiveSheet().getRange(lastRow + 1, 4).setValue(date); 
  SpreadsheetApp.getActiveSheet().getRange(lastRow + 1, 5).setValue(input.getValue());  
  }

Désormais, nous allons juste ajouter à cette fonction le code de la fonction createTask que nous avons vu précédemment en remplaçant le titre de la tâche “Hello world!” par la valeur de l’input de la cellule A2.

La fonction entière donne donc :

function updateDoc() {
  
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy");
  var input = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange("A2:A2").getCell(1, 1);
  
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getLastRow();
  
  SpreadsheetApp.getActiveSheet().getRange(lastRow + 1, 4).setValue(date); 
  SpreadsheetApp.getActiveSheet().getRange(lastRow + 1, 5).setValue(input.getValue());  
  
  var url ="https://api.taskworld.com/v1/task.create";
  
  var payload =
      {
        "access_token": "xxxx27626793xxx",
        "space_id": "5b3xxxx27626793xxx", 
        "project_id": "xxxx27626793xxx2913",
        "list_id": "xxxx27626793xxxec6xxxx27626793xxx5",
        "title" : input.getValue(),
      };
  
  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };
    var result = UrlFetchApp.fetch(url, options);
    Logger.log(result);
  }

Il ne nous reste plus qu’à configurer le déclenchement de la fonction. Pour cela, il suffit d’aller dans Edition → Déclencheur du projet actuel, et de choisir l’exécution de la fonction à la modification du fichier.

Attention, les déclencheurs s’ouvrent dans une pop-up et il est possible qu’elle soit bloquée par votre adblock, pensez à autoriser les popups sur les pages de Google Script.

Voilà, tout est terminé ! Vous pouvez désormais créer des tâches depuis votre Google Home en gardant en mémoire l’historique de tout cela.

 

Nous espérons que ce tutoriel vous a plu. N’hésitez pas à nous dire en commentaire si vous avez pu le mettre en place, et ce que votre Google Home peut maintenant faire pour vous.

Vous n’utilisez pas encore Taskworld ? N’oubliez pas que vous disposez d’une version d’essai de 15 jours, entièrement gratuite et sans engagement : https://taskworld.com/fr/signup/

Publié par Taskworld

Créez votre Espace de travail, qui s'apparente à votre bureau virtuel. Puis, invitez vos collaborateurs. Ensemble, vous pourrez créer et partager vos projets en transversal, constituer des listes de tâches, assigner des tâches, en assurer le suivi et mettre en place une date de début et une date d’échéance pour tenir les délais. Grâce au tableau de bord, vous disposerez d’une vision claire des progrès de vos projets et de la charge de travail de chacun.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s