Dans les
interfaces Ubiqod, vous pouvez autoriser l'utilisateur à prendre des photos. Ces photos peuvent être utilisées par exemple pour accompagner le signalement d'un problème. Ce tutoriel explique comment afficher cette photo dans Google Sheets.
Activation de la prise de photo
Pour permettre à l'utilisateur de prendre une photo, vous devez activer et configurer cette option dans les options avancées de votre interface :
Utilisation de la photo prise dans Google Sheets
Envoi par le connecteur
Vous pouvez envoyer le contenu de l'image à Google Sheets en sélectionnant le champ correspondant dans le
connecteur Google Sheets). La photo sera envoyée dans la colonne sélectionnée sous forme de texte, dans un format appelé
Base64.
Il est recommandé d'utiliser la plus petite résolution possible pour ne pas dépasser les limites de capacité de Google Sheets.
Si vous souhaitez utiliser des images plus grandes, nous vous recommandons d'envoyer vos images vers un espace de stockage dédié (par exemple dans Google Drive, en utilisant un connecteur de type Make ou Zapier), puis de faire un lien vers ces images dans Google Sheets.
Affichage de la photo dans l'interface Google Sheets
Dans le tableau, l'image sera affichée sous forme de texte. Pour la visualiser, vous pouvez utiliser Apps Script.
Dans le menu Extensions, sélectionnez Apps Script :
Copier puis collez le code ci-dessous dans l'éditeur, en veillant à remplacer le H de la ligne var dataUri = ss.getRange("H" + aRow).getValue() par la lettre de la colonne où se trouve votre image en Base 64 :
- function onOpen() {
- SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
- .createMenu('Ubiqod')
- .addItem('Afficher la photo', 'showSidebar')
- .addToUi();
- }
- function showSidebar() {
- var ss = SpreadsheetApp.getActive(), aRow = ss.getActiveCell().getRow();
- var dataUri = ss.getRange("H" + aRow).getValue()
- var html = HtmlService.createHtmlOutput("<img src='" + dataUri + "' />")
- .setTitle("Photo Ubiqod");
- SpreadsheetApp.getUi()
- .showSidebar(html);
- }
- function getImage() {
- var ss = SpreadsheetApp.getActive(), aRow = ss.getActiveCell().getRow();
- var dataUri = ss.getRange("H" + aRow).getValue()
- var byteString = Utilities.base64Decode(dataUri.split(',')[1]);
- var mimeString = dataUri.split(',')[0].split(':')[1].split(';')[0];
- var blob = Utilities.newBlob(byteString, mimeString, aRow + "bon.png");
- var file = DriveApp.createFile(blob);
- var url = file.getUrl();
- ss.getRange("I"+aRow).setValue('=IMAGE("' + url + '")');
- return
- }
- function convertImage(imageToConvert) {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var sheet = ss.getSheets()[0];
- var dataUri = imageToConvert
- var byteString = Utilities.base64Decode(dataUri.split(',')[1]);
- var mimeString = dataUri.split(',')[0].split(':')[1].split(';')[0];
- var blob = Utilities.newBlob(byteString, mimeString, "myImage.png");
- return blob
- }
- function displayImageFromBase64(dataUri) {
- var byteString = Utilities.base64Decode(dataUri.split(',')[1]);
- var mimeString = dataUri.split(',')[0].split(':')[1].split(';')[0];
- var blob = Utilities.newBlob(byteString, mimeString, "myImage.png");
- var file = DriveApp.createFile(blob);
- var url = file.getUrl();
- return formula = '=IMAGE("' + url + '")';
- }
Nommez votre projet et enregistrez le script. Votre écran devrait ressembler à ceci :
Retournez dans votre tableau et rafraichissez la page. Après quelques secondes, vous devrier voir apparaître un menu Ubiqod.
Sélectionner la ligne où vous souhaitez faire apparaître la photo, et cliquez sur "Afficher la photo" :
La première fois que vous utiliserez ce script, vous devrez lui accorder les autorisations demandées (il s'agit d'un script interne à votre compte, aucune donnée n'est partagée avec l'extérieur).
Vous devriez voir apparaitre l'image :