Ce guide de démarrage rapide vous explique comment créer une étape personnalisée pour les workflows Workspace à l'aide de Google Apps Script. L'étape personnalisée prend deux nombres et une opération arithmétique en entrée, effectue le calcul et génère le résultat.
Objectifs
- Créez une étape personnalisée pour Workspace Flows avec Google Apps Script.
- Déployez l'étape personnalisée dans votre propre organisation Google Workspace.
- Testez l'étape de workflow personnalisée dans Workspace Flows.
Prérequis
- Un compte Google ayant accès à Workspace Flows via le programme Gemini Alpha.
Configurer le script
Pour configurer le script, créez un projet Apps Script, puis associez-le à votre projet Cloud.
Cliquez sur le bouton suivant pour ouvrir le projet Apps Script Démarrage rapide du calculateur de flux.
Cliquez sur Vue d'ensemble.
Sur la page "Vue d'ensemble", cliquez sur
Créer une copie.
Nommez votre copie du projet Apps Script :
Cliquez sur Copie du guide de démarrage rapide du calculateur de flux.
Dans le champ Titre du projet, saisissez
Flows calculator quickstart.Cliquez sur Renommer.
Facultatif : Examiner le code du démarrage rapide
Dans la section précédente, vous avez copié un projet Apps Script entier contenant tout le code d'application requis pour l'étape personnalisée de votre flux. Vous n'avez donc pas besoin de copier et coller chaque fichier.
Si vous le souhaitez, vous pouvez examiner chaque fichier que vous avez copié dans la section précédente :
appsscript.jsonFichier manifeste. Fichier JSON spécial qui spécifie des informations de base sur le projet dont Apps Script a besoin pour exécuter le script.
Afficher le code
appsscript.json{ "timeZone": "America/Los_Angeles", "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "addOns": { "common": { "name": "Calculator", "logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png", "useLocaleFromApp": true }, "flows": { "workflowElements": [ { "id": "actionElement", "state": "ACTIVE", "name": "Calculate", "description": "Asks the user for two values and a math operation, then performs the math operation on the values and outputs the result.", "workflowAction": { "inputs": [ { "id": "value1", "description": "value1", "cardinality": "SINGLE", "dataType": { "basicType": "INTEGER" } }, { "id": "value2", "description": "value2", "cardinality": "SINGLE", "dataType": { "basicType": "INTEGER" } }, { "id": "operation", "description": "operation", "cardinality": "SINGLE", "dataType": { "basicType": "STRING" } } ], "outputs": [ { "id": "result", "description": "Calculated result", "cardinality": "SINGLE", "dataType": { "basicType": "INTEGER" } }, { "id": "log", "description": "Logged result of flow event.", "cardinality": "SINGLE", "dataType": { "basicType": "STRING" } } ], "onConfigFunction": "onConfigCalculateFunction", "onExecuteFunction": "onExecuteCalculateFunction" } } ] } } }
Calculator.gsDéfinit une étape personnalisée pour Google Workspace Flows. L'étape "Calculer" prend deux nombres et une opération comme entrée, puis renvoie le résultat du calcul.
Afficher le code
Calculator.gs/** * This script defines a custom step for Google Workspace Flows. * The step, named "Calculate", takes two numbers and an operation as input * and returns the result of the calculation. * * The script includes functions to: * * 1. Define the configuration UI for the step using Card objects: * * - `onConfigCalculateFunction()`: Generates the main configuration card. * - Helper functions like `pushCard()`, `saveButton()` to build card components. * * 2. Handle the execution of the step. * * - `onExecuteCalculateFunction()`: Retrieves inputs, performs the calculation, * and returns outputs. * * To learn more, see the following quickstart guide: * https://developers.google.com/workspace/add-ons/workflows/quickstart */ /** * Creates an action response to push a new card onto the card stack. * * This function generates an action object that, when returned, causes the * provided card to be pushed onto the card stack, making it the currently * displayed card in the configuration UI. * @param {Object} card The Card object to push. * @return {Object} The action response object. */ function pushCard(card) { return { "action": { "navigations": [{ "push_card": card } ] } }; } /** * Creates an action response to update the currently displayed card. * * This function generates an action object that, when returned, causes the * currently displayed card to be replaced with the provided card in the * configuration UI. * @param {Object} card The Card object to update. * @return {Object} The render actions object. */ function updateCard(card) { return { "render_actions": { "action": { "navigations": [{ "update_card": card } ] } } }; } /** * Creates a button configuration object for saving the workflow. * * This function generates a button definition that, when clicked, triggers * a save action for the current workflow configuration. * @return {Object} The button widget object. */ function saveButton() { return { "text": "Save", "onClick": { "hostAppAction" : { "workflowAction" : { "saveWorkflowAction" : {} } } }, }; } /** * Creates a button configuration object for a refresh action. * * This function generates a button definition that, when clicked, triggers * a function to refresh the current card. * @param {string} functionName The name of the Apps Script function to call on click. * @return {Object} The button widget object. */ function refreshButton(functionName) { return { "text": "Refresh", "onClick": { "action" : { "function" : functionName } }, }; } /** * Generates and displays a configuration card for the sample calculation action. * * This function creates a card with input fields for two values and a dropdown * for selecting an arithmetic operation. The card also includes a "Save" * button to save the action configuration for the workflow. * * The input fields are configured to let the user select outputs from previous * workflow steps as input values using the `hostAppDataSource` property. * This function is called when the user adds or edits the "Calculate" step in the Flows UI. * @return {Object} The action response object containing the card to display. */ function onConfigCalculateFunction() { var card = { "sections": [ { "header": "Action sample: Calculate", "widgets": [ { "textInput": { "name": "value1", "label": "First value", "hostAppDataSource" : { "workflowDataSource" : { "includeVariables" : true } } } }, { "selectionInput": { "name": "operation", "label": "Operation", "type": "DROPDOWN", "items": [ { "text": "+", "value": "+", }, { "text": "-", "value": "-", }, { "text": "x", "value": "x", }, { "text": "/", "value": "/", } ] } }, { "textInput": { "name": "value2", "label": "Second value", "hostAppDataSource" : { "workflowDataSource" : { "includeVariables" : true } } } } ] } ] }; return pushCard(card); } /** * Gets an integer value from variable data, handling both string and integer formats. * * This function attempts to extract an integer value from the provided variable data. * It checks if the data contains string values and, if so, parses the first string * as an integer. If integer values are present, it returns the first integer. * @param {Object} variableData The variable data object from the event. * @return {number} The extracted integer value. */ function getIntValue(variableData) { if (variableData.stringValues) { return parseInt(variableData.stringValues[0]); } return variableData.integerValues[0]; } /** * Executes the calculation action based on the inputs from a workflow event. * * This function retrieves input values ("value1", "value2") and the "operation" * from the workflow event, performs the calculation, and returns the "result" and * "log" as output variables. * This function is called when the workflow execution reaches this custom step. * @param {Object} event The event object passed by the Flows runtime. * @return {Object} The output variables object. */ function onExecuteCalculateFunction(event) { console.log("output: " + JSON.stringify(event)); var calculatedValue = 0; var value1 = getIntValue(event.workflow.actionInvocation.inputs["value1"]); var value2 = getIntValue(event.workflow.actionInvocation.inputs["value2"]); var operation = event.workflow.actionInvocation.inputs["operation"].stringValues[0]; if (operation == "+") { calculatedValue = value1 + value2; } else if (operation == "-") { calculatedValue = value1 - value2; } else if (operation == "x") { calculatedValue = value1 * value2; } else if (operation == "/") { calculatedValue = value1 / value2; } var renderAction = { "hostAppAction" : { "workflowAction" : { "returnOutputVariablesAction" : { "variableValues" : [ { "variableId": "result", "integerValues": [ calculatedValue ] } ] } } } }; }
Déployer et tester votre étape
Pour tester votre étape, configurez un déploiement de test pour votre module complémentaire, ajoutez l'étape à un flux, puis exécutez le flux.
Configurez un déploiement de test pour votre module complémentaire :
- Ouvrez le projet de script dans l'éditeur Apps Script.
- Cliquez sur Déployer > Tester les déploiements.
- Cliquez sur Installer.
- En bas de l'écran, cliquez sur OK.
Vous pouvez autoriser d'autres utilisateurs à tester le module complémentaire en partageant le projet Apps Script avec leur compte (l'accès en modification est requis). Demandez ensuite aux utilisateurs de suivre les étapes précédentes.
Une fois installé, le module complémentaire est immédiatement disponible dans les flux. Vous devrez peut-être actualiser Flows avant que le module complémentaire n'apparaisse. Vous devez également autoriser le module complémentaire avant de l'utiliser.
Pour en savoir plus sur les déploiements de test, consultez Installer un module complémentaire non publié.
Ouvrez Flows.
Créez un flux qui inclut votre étape :
- Cliquez sur Nouveau flux.
- Sélectionnez le point de départ du flux. Lorsque vous testez une étape, choisissez un déclencheur que vous pouvez définir vous-même, comme l'envoi d'un e-mail à vous-même. Si votre étape nécessite une variable d'entrée, configurez-la comme faisant partie de la sortie du starter.
- Cliquez sur Ajouter une étape. Sélectionnez l'étape que vous avez créée ou modifiée, appelée Calculer.
- Configurez votre étape. Pour l'étape de calcul, choisissez deux valeurs et une opération mathématique. L'étape est enregistrée automatiquement.
- Pour tester le résultat de votre étape, ajoutez-en une autre. Par exemple, pour ajouter une sortie à un message électronique, vous pouvez ajouter l'étape Envoyer un message de Gmail. Dans Message, cliquez sur Variables, puis sélectionnez la sortie de votre étape. Pour l'étape de calcul, sélectionnez Variables > Étape 2 : Résultat calculé > Résultat calculé. La variable s'affiche sous forme de chip dans le champ Message.
- Cliquez sur Activer. Votre flux est prêt à être exécuté.
Exécutez le flux en déclenchant son déclencheur. Par exemple, si votre flux démarre lorsque vous recevez un e-mail, envoyez-vous un e-mail.
Vérifiez que le flux s'exécute comme prévu. Consultez les journaux en accédant à l'onglet Activité du générateur de flux. Pour savoir comment créer des journaux personnalisés dans l'onglet "Activité", consultez Journaux d'activité.
Étapes suivantes
Vous avez créé et testé une étape de flux personnalisée pour les flux Workspace. Vous pouvez à présent :
Continuez à personnaliser l'étape en demandant à Gemini de vous aider à implémenter une logique plus complexe.
Créez une fiche de configuration pour personnaliser la configuration des étapes.
Consignez l'activité et les erreurs pour enregistrer et résoudre les problèmes liés à l'exécution de vos étapes.
Examinez les objets d'événement du flux d'examen pour consulter la charge utile JSON que les flux envoient et reçoivent lors de leur exécution.