このガイドでは、Google Workspace フローのフローに追加できるステップを作成する方法について説明します。
ステップは、フローの一連のタスクの 1 つのステップです。ステップでフローを開始することはできません。
たとえば、算術演算を行うステップについて考えてみましょう。ユーザーに 2 つの値と算術演算を尋ねます。次に、値に対して算術演算を実行し、結果を出力します。
 
ステップをビルドするには、アドオンのマニフェスト ファイルでステップを構成し、Google Workspace アドオンのコードでアプリケーション ロジックを記述して、ステップをデプロイしてテストします。アルファ版の期間中は、フローを拡張するアドオンを公開しないでください。
ステップを定義する
ステップを構成するには、マニフェスト ファイルで定義し、アプリケーション ロジックをコードで記述します。
マニフェスト ファイルでステップを定義する
マニフェスト ファイルで、appsscript.json:
- onConfigFunctionと- onExecuteFunctionを、アドオンのコード内の対応する関数の名前に設定します。この例では、関数は- onConfigCalculate()と- onExecuteCalculate()です。- onConfigFunctionはステップを設定して構成します。必要に応じて、メールの送信先アドレスなど、ステップの実行に必要なデータをユーザーから収集します。このガイドの例では、2 つの値と算術演算をリクエストします。
- onExecuteFunctionはステップを実行します。ユーザーからデータが収集された場合、そのデータはこの関数に渡されます。該当する場合は、出力を返します。このガイドの例では、数学の計算結果を出力します。
 
- 必要な入力と出力を設定します。これにより、ステップでデータを収集して後続のステップに送信できます。この例では、ユーザーに 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"
          }
        }
      ]
    }
  }
}
次に、コードでステップを定義して、サポート コードを記述します。
コードでステップを定義する
アプリケーション コードで、次の操作を行います。
- onConfigFunctionを記述します。この例では- onConfigCalculate()と呼びます。ユーザーがフローにステップを追加すると、フロービルダーでフローのステップの側面を構成できます。ユーザーから必要な情報を収集するために、- onConfigFunctionは構成カードを定義します。- カードは、アドオンのユーザー インターフェースの構成要素です。カードは、定義されたレイアウト、ボタンなどのインタラクティブな UI 要素、画像などのリッチメディアをサポートしています。カードは、ステップの実行に必要なユーザーのデータ(メールの送信に使用するメールアドレスなど)を取得するために使用します。 - OnConfigFunctionは、カードを含む- RenderActionsオブジェクトを返します。このカードは、ユーザーがステップのデータを設定する UI を定義します。この例では、- onConfigFunctionは、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
        ]
      },
  }]);
}
ステップをテストする
ステップをテストするには、アドオンのテスト用デプロイを設定し、フローにステップを追加して、フローを実行します。
- アドオンのテスト用デプロイを設定します。 - Apps Script エディタでスクリプト プロジェクトを開きます。
- [デプロイ] > [デプロイをテスト] をクリックします。
- [インストール] をクリックします。
- 下部にある [完了] をクリックします。
 - 他のユーザーにアドオンをテストしてもらうには、Apps Script プロジェクトをそのユーザーのアカウントと共有します(編集権限が必要です)。その後、お客様に上記の手順をご案内します。 - インストールすると、アドオンはフローですぐに使用できるようになります。アドオンが表示される前に、フローを更新する必要がある場合があります。アドオンを使用する前に、アドオンを承認する必要もあります。 - テスト デプロイの詳細については、未公開のアドオンをインストールするをご覧ください。 
- [フロー] を開きます。 
- ステップを含むフローを作成します。 - [New flow] をクリックします。
- フローの開始方法を選択します。ステップをテストする際は、メールを自分に送信するなど、自分で開始できるスターターを選択することをおすすめします。ステップに入力変数が必要な場合は、スターターの出力の一部として入力変数を構成します。
- [ステップを追加] をクリックします。作成または更新したステップ([Calculate])を選択します。
- ステップを構成します。計算ステップでは、2 つの値と算術演算を選択します。手順は自動的に保存されます。
- ステップの出力をテストするには、別のステップを追加します。たとえば、メール メッセージに出力を追加するには、Gmail の [メッセージを送信] ステップを追加します。[メッセージ] で、 [変数] をクリックし、ステップの出力を選択します。計算ステップで、[変数] > [ステップ 2: 計算結果] > [計算結果] を選択します。変数は [メッセージ] フィールドにチップとして表示されます。
- [有効にする] をクリックします。フローの実行準備が整いました。
 
- フローの開始条件をトリガーして、フローを実行します。たとえば、メールを受信したときにフローが開始される場合は、自分宛てにメールを送信します。 
- フローが想定どおりに実行されることを確認します。ログを確認するには、フロービルダーの [アクティビティ] タブにアクセスします。[アクティビティ] タブでカスタムログを作成する方法については、アクティビティ ログをご覧ください。