ステップを作成する

このガイドでは、Google Workspace フローのフローに追加できるステップを作成する方法について説明します。

ステップは、フローの一連のタスクの 1 つのステップです。ステップでフローを開始することはできません。

たとえば、算術演算を行うステップについて考えてみましょう。ユーザーに 2 つの値と算術演算を尋ねます。次に、値に対して算術演算を実行し、結果を出力します。

ユーザーがフローの一部として計算ステップを構成します。

図 1: ユーザーがフローの一部として計算ステップを構成する。

ステップをビルドするには、アドオンのマニフェスト ファイルでステップを構成し、Google Workspace アドオンのコードでアプリケーション ロジックを記述して、ステップをデプロイしてテストします。アルファ版の期間中は、フローを拡張するアドオンを公開しないでください。

ステップを定義する

ステップを構成するには、マニフェスト ファイルで定義し、アプリケーション ロジックをコードで記述します。

マニフェスト ファイルでステップを定義する

マニフェスト ファイルで、appsscript.json:

  1. onConfigFunctiononExecuteFunction を、アドオンのコード内の対応する関数の名前に設定します。この例では、関数は onConfigCalculate()onExecuteCalculate() です。
    • onConfigFunction はステップを設定して構成します。必要に応じて、メールの送信先アドレスなど、ステップの実行に必要なデータをユーザーから収集します。このガイドの例では、2 つの値と算術演算をリクエストします。
    • onExecuteFunction はステップを実行します。ユーザーからデータが収集された場合、そのデータはこの関数に渡されます。該当する場合は、出力を返します。このガイドの例では、数学の計算結果を出力します。
  2. 必要な入力と出力を設定します。これにより、ステップでデータを収集して後続のステップに送信できます。この例では、ユーザーに 2 つの値と inputs[] で定義された算術演算を尋ねます。outputs[] で定義されている計算結果を出力します。

    入力と出力の詳細については、入力変数出力変数をご覧ください。フローがエラーなしで実行されるように、入力変数を検証します。

Calculator ステップのマニフェスト ファイルは次のとおりです。

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"
                }
              }
            ],
            "onConfigFunction": "onConfigCalculate",
            "onExecuteFunction": "onExecuteCalculate"
          }
        }
      ]
    }
  }
}

次に、コードでステップを定義して、サポート コードを記述します。

コードでステップを定義する

アプリケーション コードで、次の操作を行います。

  1. onConfigFunction を記述します。この例では onConfigCalculate() と呼びます。ユーザーがフローにステップを追加すると、フロービルダーでフローのステップの側面を構成できます。ユーザーから必要な情報を収集するために、onConfigFunction は構成カードを定義します。

    カードは、アドオンのユーザー インターフェースの構成要素です。カードは、定義されたレイアウト、ボタンなどのインタラクティブな UI 要素、画像などのリッチメディアをサポートしています。カードは、ステップの実行に必要なユーザーのデータ(メールの送信に使用するメールアドレスなど)を取得するために使用します。

    OnConfigFunction は、カードを含む RenderActions オブジェクトを返します。このカードは、ユーザーがステップのデータを設定する UI を定義します。この例では、onConfigFunction は、2 つの値と算術演算をユーザーに求めるカードを作成します。

  2. この例では、onExecuteCalculate() という名前の onExecuteFunction を作成します。フローでステップが実行されると、OnExecuteFunction が実行されます。onConfigurationFunction で定義されているように、構成時にユーザーが設定した入力値は OnExecuteFunction に渡されます。

    提供された入力を使用してタスクを同期的に実行するように OnExecuteFunction() を記述します。OnExecuteFunction() は、フローのマニフェストで定義されたすべての出力を返す必要があります。そうしないと、エラーが発生します。

このコードサンプルには、提供された変数をステップの出力として構築して送信するサポート関数 outputVariables() が含まれています。

ステップのテストの準備が整いました。

Calculator ステップのコードは次のとおりです。

Apps Script

/**
 * Generates and displays a configuration card for the sample calculation step.
 *
 * This function creates a card with input fields for two values and a drop-down
 * for selecting an arithmetic operation. The card also includes a "Save"
 * button to save the step 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.
 */
function onConfigCalculate() {
  var card = {
    "sections": [
      {
        "header": "Step example: 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 {
    "action": {
      "navigations": [{
        "push_card": card
      }]
    }
  };
}

/**
 * Returns output variables from a step.
 *
 * This function constructs an object that, when returned, sends the
 * provided variable values as output from the current step.
 * The variable values are logged to the console for debugging purposes.
 */
function outputVariables(variableValues) {
  var renderAction =  {
    "hostAppAction" : {
      "workflowAction" : {
        "returnOutputVariablesAction" : {
          "variables" : variableValues
        }
      }
    }
  };
  console.log("renderAction: " + JSON.stringify(renderAction));
  return renderAction;
}

/**
 * Executes the calculation step based on the inputs from a flow event.
 *
 * This function retrieves input values and the operation from the flow event,
 * performs the calculation, and returns the result as an output variable.
 * The function logs the event for debugging purposes.
 */
function onExecuteCalculate(event) {
  console.log("output: " + JSON.stringify(event));
  var calculatedValue = 0;
  var value1 = event.workflow.actionInvocation.inputs["value1"].integerValues[0];
  var value2 = event.workflow.actionInvocation.inputs["value2"].integerValues[0];
  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;
  }
  return outputVariables([{
    "variableId": "result",
    "variableData": {
        "integerValues": [
          calculatedValue
        ]
      },
  }]);
}

ステップをテストする

ステップをテストするには、アドオンのテスト用デプロイを設定し、フローにステップを追加して、フローを実行します。

  1. アドオンのテスト用デプロイを設定します。

    1. Apps Script エディタでスクリプト プロジェクトを開きます。
    2. [デプロイ] > [デプロイをテスト] をクリックします。
    3. [インストール] をクリックします。
    4. 下部にある [完了] をクリックします。

    他のユーザーにアドオンをテストしてもらうには、Apps Script プロジェクトをそのユーザーのアカウントと共有します(編集権限が必要です)。その後、お客様に上記の手順をご案内します。

    インストールすると、アドオンはフローですぐに使用できるようになります。アドオンが表示される前に、フローを更新する必要がある場合があります。アドオンを使用する前に、アドオンを承認する必要もあります。

    テスト デプロイの詳細については、未公開のアドオンをインストールするをご覧ください。

  2. [フロー] を開きます。

  3. ステップを含むフローを作成します。

    1. [New flow] をクリックします。
    2. フローの開始方法を選択します。ステップをテストする際は、メールを自分に送信するなど、自分で開始できるスターターを選択することをおすすめします。ステップに入力変数が必要な場合は、スターターの出力の一部として入力変数を構成します。
    3. [ステップを追加] をクリックします。作成または更新したステップ([Calculate])を選択します。
    4. ステップを構成します。計算ステップでは、2 つの値と算術演算を選択します。手順は自動的に保存されます。
    5. ステップの出力をテストするには、別のステップを追加します。たとえば、メール メッセージに出力を追加するには、Gmail の [メッセージを送信] ステップを追加します。[メッセージ] で、 [変数] をクリックし、ステップの出力を選択します。計算ステップで、[変数] > [ステップ 2: 計算結果] > [計算結果] を選択します。変数は [メッセージ] フィールドにチップとして表示されます。
    6. [有効にする] をクリックします。フローの実行準備が整いました。
  4. フローの開始条件をトリガーして、フローを実行します。たとえば、メールを受信したときにフローが開始される場合は、自分宛てにメールを送信します。

  5. フローが想定どおりに実行されることを確認します。ログを確認するには、フロービルダーの [アクティビティ] タブにアクセスします。[アクティビティ] タブでカスタムログを作成する方法については、アクティビティ ログをご覧ください。