> For the complete documentation index, see [llms.txt](https://docs-embed.anyflow.jp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-embed.anyflow.jp/trial-tour/start/step4.md).

# STEP4｜変数の活用、デバッグ

## **概要**

STEP4では、STEP1〜3のソリューションを活用し、**トリガーで取得した変数をアクションで利用する方法**と**デバッグの方法について**ご紹介します。

こちらは、どのソリューションでも活用可能なのでぜひマスターしてみてください🎉

## **1.ソリューションを作成しよう（Lv4）**

Lv3のソリューションのトリガーを、Google Driveトリガーに変更し、\
Google Driveのフォルダにファイル/フォルダが作成された際に、トリガーで取得した情報をSlackのメッセージで投稿するソリューションを設定します。

### **1-1.トリガーの設定**

Google Driveトリガーを選択します。

<figure><img src="https://files.readme.io/924a30a-google-drive-triggers.png" alt=""><figcaption></figcaption></figure>

***

フォルダIDを、テキストで直接入力します。

<figure><img src="https://files.readme.io/1f44eb8-folder-id.png" alt=""><figcaption></figcaption></figure>

***

フォルダIDは、Google DriveのURLから取得します。

<figure><img src="https://files.readme.io/94068ec-google-drive-folder-id.png" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}

### エンドユーザーにフォルダを指定してもらう方法について

上記のように、フォルダIDでフォルダを直接指定することも可能ですが、エンドユーザーにフォルダを選択してもらうことも可能です。\
詳細の設定方法については、[エンドユーザー変数](/solution-editor/variables/enduser.md) をご確認ください。
{% endhint %}

***

### **1-2.アクションの設定**

SlackBotアクションの、メッセージ内容欄にカーソルを合わせクリックします。\
クリックすると、左側に変数ウィンドウが表示されます。\
変数ウィンドウからトリガー名の項目をクリックします。

<figure><img src="https://files.readme.io/24b674b-variables-select.png" alt=""><figcaption></figcaption></figure>

***

クリックすると、変数一覧が表示されます。

<figure><img src="https://files.readme.io/3da3f36-variables-list.png" alt="" width="375"><figcaption></figcaption></figure>

***

メッセージ内容をテキストで入力し、変数ウィンドウから使用したい変数を選択します。

<figure><img src="https://files.readme.io/86d65d3-variables-select-message.png" alt=""><figcaption></figcaption></figure>

以上で、ソリューションエディターの設定は完了です。

***

## **2.ウィザードエディターの設定**

今回、Google Driveのコネクタを追加したので、Google Driveのアカウント認証するための設定を行います。\
[STEP1](/trial-tour/start/step1.md#id-3-1akaunto)と同様の方法で設定します。

<figure><img src="https://files.readme.io/766500b-google-drive-account.png" alt=""><figcaption></figcaption></figure>

以上で、全ての設定が完了です🎉

***

## **3.テスト実行**

[STEP1](/trial-tour/start/step1.md#id-4tesuto)と同様の方法でテスト実行を行います。

<figure><img src="https://files.readme.io/b403376-test-result-variables.png" alt=""><figcaption></figcaption></figure>

無事にテストが成功しました🎉

***

設定で指定した変数が正しくメッセージ内容に反映されているか確認します。

<figure><img src="https://files.readme.io/f75761b-CleanShot_2024-01-13_at_11.44.572x.png" alt="" width="563"><figcaption></figcaption></figure>

***

## **4.デバッグ**

もしテスト実行が失敗した場合は、エラーになったステップが赤枠で表示され、デバッグタブに<mark style="color:red;">赤文字</mark>でエラーメッセージが表示されます。

<figure><img src="https://files.readme.io/4ada802-debug-tab.png" alt=""><figcaption></figcaption></figure>

エラーメッセージは、エラーになったステップのアプリから返ってきたAPIのメッセージが表示されています。\
すなわち、上記画像の `channel_not_found` は、Slackから返ってきたエラーメッセージになっています。

***

### **4-1.デバッグ方法**

エラー原因を特定するためのヒントとしては、<mark style="color:red;">赤文字</mark>のエラーメッセージが大きなヒントとなるので、一番はじめにエラーメッセージを確認することをおすすめします。

エラーメッセージが解読できない場合は、エラーになったアプリのエラーメッセージを検索するなどして、ソリューションの組み立てとテストを繰り返しソリューションを構築していきます。

### **4-2.エラー解消に向けて**

今回は、デバッグの方法をお伝えする例として、以下を題材に説明します。

<figure><img src="https://files.readme.io/b34c26d-debug-error.png" alt=""><figcaption></figcaption></figure>

エラーメッセージを確認すると、`channel_not_found` となっており、直訳すると `チャンネルが見つかりません` という内容になります。\
上記を踏まえて、"Slackでメッセージを投稿する際に指定しているチャンネルが見つからない可能性がある" という仮説を立てます。

***

### **4-3.ソリューションエディターを確認する**

エラーになったステップが赤枠で表示されているので、該当のステップをソリューションエディターから確認します。

<figure><img src="https://files.readme.io/45c6e75-debug-slack-actions.png" alt=""><figcaption></figcaption></figure>

***

`チャンネルが見つかりません` というエラーメッセージだったので、\[投稿するチャンネル] を確認します。

<figure><img src="https://files.readme.io/19b3553-slack-channel-id.png" alt=""><figcaption></figcaption></figure>

確認すると、本来 `CU95KHWMC` というSlack IDのチャンネルを指定していたはずが、末尾のテキストが抜けて、`CU95KHWM`というチャンネルにメッセージを投稿するように指定していました。

`CU95KHWM`というチャンネルは存在しないため、エラーが発生したということになります。

***

### **4-3.設定を修正する**

上記にて原因が判明したため、SlackのチャンネルIDを正しい形で入力し、もう一度テスト実行をしてみましょう。

<figure><img src="https://files.readme.io/84a2a34-debug-test-result.png" alt=""><figcaption></figcaption></figure>

無事にテストが成功しました🎉

***

今回は、エラーメッセージをヒントにすぐに解決に辿り着きましたが、エラーメッセージのみで原因がわからない場合は、入力値タブや出力値タブを確認しながらソリューションの組み方に問題がないかを確認します。

<figure><img src="https://files.readme.io/2b72516-error-input.png" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}

### ヒント

お客様でトライアンドエラーの結果、解決できないエラーについてはAnyflowのカスタマーサクセスチームにご連絡ください。
{% endhint %}

***

## **まとめ**

今回のセクションでは、トリガーで取得した変数を後続のアクションで使用する方法とデバッグの方法について学ぶことができました。\
変数については、トリガーだけではなくアクションで取得した変数も使用可能なので、様々な内容を試してみてください。

{% hint style="success" %}

### 独自のSlack Bot を設定したい場合

今回のトライアルツアーでは、SlackBotコネクタにデフォルトで設定してあるAnyflow の Bot からメッセージ投稿を行いました。独自のSlack Bot を設定したい場合は以下のレシピを参考にしてください。

[レシピ | 独自のSlackBotを設定する](/recipe/communication/slackbot-custom-original-bot.md)
{% endhint %}

***

## **トライアルツアーが初級編が終わったら**

余力があれば、ぜひ中級編のトライアルツアーに進みましょう🏃

中級編のツアーでは、自社の独自アクションや独自トリガーを作成することで、より自社プロダクトに合ったソリューションを作成できるように説明していきます。

### 👉いざ、中級編へ

[🏃 トライアルツアー中級編](/trial-tour/start-intermediate.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs-embed.anyflow.jp/trial-tour/start/step4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
