適用対象

Bridge by Smartsheet

米国気象サービスの空ワークフローを開始

Smartsheet のシートでチェックボックスがオンになっていると、ワークフローがトリガーされます。その行の座標を使用して、米国気象サービスから最新の天気予報を取得し、Smartsheet の同じ行にそのデータを入力します。

Who can use this?

Plans:

  • Bridge by Smartsheet

気象データへのアクセスにアカウントは必要ありませんので、米国気象サービスを使用して予報を取得します。

予報を取得するには、米国気象サービスに対して 2 つの API 呼び出しを行う必要があります。

  • 1 つは、地理的な場所の把握ポイントを見つけるための呼び出しです。
  • 2 つ目は、特定されたグリッド ビューの予報を取得するための呼び出しです。 

API 呼び出しに慣れていない場合でも、このガイドのステップに従うだけで設定できます。このガイドは、ワークフローを完了するために必要な機能をすべて提供します。

以下に、ワークフローを構築するためのステップを示します。

  1. ワークフローを作成
  2. シートを作成
  3. Smartsheet での認証とトリガーの設定
  4. [Get Row (行を取得)] を設定
  5. ジャンク ションを設定
  6. 最初の API 呼び出しを設定
  7. 2 番目の API 呼び出しを設定する
  8. 行の更新を設定する

ステップ 1: ワークフローを作成

  1. Bridge の [Workflow (ワークフロー)] ダッシュボードで、[+] を選択します。
  2. ワークフローに名前を付け、[Create New (新規作成)] を選択します。この操作でデザイナーに移動します。

    すべてのワークフローは、トリガーと状態で開始します。

Brandfolder Image
New workflow for the API call to the US Weather Service

ステップ 2: シートを作成

Bridge でトリガーを設定するには、5 列以上ある Smartsheet のシートが必要です。

次の列名と列タイプになるようにシートを設定します。

列名列タイプ
Date (日付)日付
Today (今日)チェックボックス
Longitude (経度)テキスト
Latitude (緯度)テキスト
Weather Forecast (天気予報)テキスト

[Weather Forecast (天気予報)] 列はプライマリ列または通常の文字列のいずれかになります。 

  1. [Today (今日)]列の最初のセルに、以下の式を貼り付けます。

    %IF(日付列(日付)列+ TODAY()、true、false)

  2. 選択入力します。[Date (日付)] 列に設定されているデータが今日の日付の場合、これでチェックボックスがオンになり、Bridge のワークフローをトリガーするために使用できるようになります。
  3. 式の入ったセルを右クリックして、[Convert to Column Formula (列の数式に変換)] を選択します。これで、シートに追加されるすべての新しい行で [Today (今日)] 列の式を使用するようになります。
  4. シートを保存します。
  5. Bridge のデザイナーに戻る前に、シート ID をコピーします。[File (ファイル)] > [Properties (プロパティ)] に移動するとシート ID を確認できます。

ステップ 3:トリガーを設定する

デザイナーで、ワークフローの最初の [Trigger (トリガー)] 要素を選択します。これでデザイナーの右側にパネルが開き、使用するトリガーのタイプを設定できます。ワークフローは Smartsheet のイベントによってトリガーされる必要があるため、使用するトリガーのタイプは [Integration Trigger (統合トリガー)] になります。

パネルで [Integrations (統合)] セクションが自動で展開するので、.[Integrations Page (統合ページ)] を選択します。

Brandfolder Image
Set up the trigger for the API call

新しいタブが開き、[Integrations (統合)] ページが表示されます。 

  1. Smartsheet 統合を探し、ロゴを選択します。 
  2. [Continue (続行)] を選択します。 
  3. 選択認証
  4. これで別のウィンドウが開き、Bridge から Smartsheet アカウントへのアクセスを許可するかどうかを確認されます。[Allow (許可する)] を選択します。

認証に成功すると、ウィンドウが [Triggers (トリガー)] タブに変更されます。

Brandfolder Image
Triggers tab

[Triggers (トリガー)] セクションを展開し、[+] アイコンのある行を選択します。

  1. [Sheet ID (シート ID)] フィールドに、シート作成時にコピーしたシート ID を貼り付けます。シート名が一意であることがわかっている場合は、その名前を入力することもできます。
  2. [Event Type (イベントのタイプ)] ドロップダウン リストで、[When Column Values are Changed (列の値が変更された場合)] を選択します。
  3. [Event Type (イベント タイプ)] の選択時に追加されたフィールドで、列名に [Today (今日)] と入力します。
  4. [Select Workflow (ワークフローを選択)] ドロップダウン リストで、作成済みのワークフローを選択し、[Save (保存)] を選択します。

    ポップアップが再読み込みされ、[Triggers (トリガー)] セクションが折りたたまれます。これでトリガーが正常に設定されました。

  5. タブを閉じ、デザイナーに戻ります。

トリガーの保存時にエラーが発生する

トリガーを保存する際にエラー メッセージを受け取った場合は、次の項目を確認します。

  • 列名のつづりがシートの列名と全く同じであることを確認します。 
  • シート ID を使用する代わりにシート名を入力した場合は、入力内容がまったく同じであることを確認してください。 
  • シート所有者ではない場合は、アクセス権があるかどうか、シートの権限を確認します。
  • 他のトリガーがすでに設定されている場合は、別のトリガーで問題が発生している可能性があります。他のトリガーを確認して、いずれかのトリガーで権限が変更されていないこと、またはトリガーで参照されているシートがまだ存在していることを確認します。

ステップ 4: [Get Row (行を取得)] を設定

リンクが変更されたときにワークフローが実行されるようにトリガーを設定しました今日このアクションにより、Bridge に基本情報が送信されます。ワークフローの最初のステップでは、この初期情報の一部を取得する必要があります。 

  1. まず、最初の列の日付セルに今日の日付を設定します。設定すると、先程入力した式により、[Today (今日)] 列のチェックボックスが自動的にオンになります。 
  2. シートを保存し、Bridge のデザイナーに戻ります。
  3. [Run Log (実行ログ)] を開きます。初めは空になっているので、[Refresh (最新の情報に更新)] を選択します。これでパネルが更新され、ステータスが [Completed (完了済み)] と表示されます。
  4. Smartsheet から Bridge に送信された初期データを表示するには、[Trigger (トリガー)] 行、[Event (イベント)] 行の順に展開します。 
  5. トリガー データの [rowId (行 ID)] にカーソルを合わせて、その他アイコンをクリックすると、ドロップダウン リストが表示されます。 
  6. ドロップダウンで [Copy Data Reference (データ参照をコピーする)] を選択します。これにより、クリップボードに変更された行 ID への参照がコピーされます。

    JSON ソースではなく参照を使用することで、ワークフローは常に同じ列を確認するのではなく、変更された列を取得します。列の変更はワークフローの実行ごとに異なるため、この作業は非常に重要です。 

Brandfolder Image
Set up Get Row

状態を更新し、モジュールを追加

  1. グレーの状態をクリックし、[Name (名前)] フィールドを [Get Row (行を取得)] に変更します。

    ワークフローを読みやすくするために、その下のモジュールの内容に応じて状態に名前を付けることをお勧めします。

  2. 左側のメニューで [Get Row (行を取得)] モジュールを探します。検索フィールドを使用するか、[Integrations (統合)] > [Smartsheet] > [Get Row (行を取得)] を展開します。
  3. モジュールをグレーの状態の下にあるワークフローにドラッグします。モジュールを設定するパネルが自動的に開きます。 
  4. [Row ID (行 ID)] フィールドに [Run Log (実行ログ)] からコピーした [rowId (行 ID)] の参照先を貼り付けます。貼り付けた値は {{runtime.event.rowId}} となっています。
  5. シート ID を取得するには、実行ログを再度開き、トリガー データを展開してシート ID を探します。先程の行 ID 同様、その他アイコンを選択して、シート ID の参照先をコピーします。
  6. 再度 [Get Row (行を取得)] モジュールをクリックして、[Sheet (シート)] フィールドに参照先を貼り付けます。貼り付けた値は {{runtime.sheetID}} となっています。
  7. ページの一番上にある [削除] を選択します。

    Brandfolder Image
    Update the state and add a module

ステップ 5: ジャンク ションを設定

次に、変更されたシートのチェックボックスがオンかオフかを判断する必要があります。オフのチェックボックスは無視しますが、オンに変更されている場合、[Date (日付)] 列の日付が今日の日付になっており、天気予報を取得することを意味します。

そのためには、チェックボックスでセルを参照する必要があります。

  1. シートに戻って、先ほど追加した列の日付を変更し、チェックボックスをオフにします。その後シートを保存します。
  2. 再度 Bridge で [Run Log (実行ログ)] を開き、パネル左上の [All Runs (すべての実行)] を選択します。リストを最新の情報に更新すると、リストの一番上に完了済みの新しい実行が表示されます。 
  3. この新しい実行を開き、ステップ [Smartsheet: Get Row (行を取得)] を展開して行データを表示します。
  4. [row (行)] > [cells (セル)] > [Today (今日)] の下の値が [false (偽)] になっています。つまり、[Today (今日)] 列のチェックボックスが行で変更され、オフになっています。 
  5. ドロップダウンを使用して、この値のデータ参照をコピーします。

一致条件付きジャンクションを追加

次のステップでは、値がテキスト値 [true (真)] (オン) と [false (偽)] (オフ) のどちらと一致するか確認するジャンクションを追加します。 

  1. 検索フィールドで [Match (一致)] と入力するか、[Utilities (ユーティリティ)] > [Conditional Junctions (条件付きジャンクション)] > [Match (一致)] を展開してジャンクションを探します。 
  2. ジャンクションを [Get Row (行を取得)] モジュールの下にドラッグし、名前を [Today's Date (今日の日付)] にします。

このジャンクションは、ジャンク ション自体と、2 つのプレースホルダーの状態という 3 つのコンポーネントで構成されています。左側のメニューの [Pinned Items (固定アイテム)] > [New State (新しい状態)] のワークフローに、見つけた他の状態をドラッグすることもできます。

ジャンクションに状態を追加

  1. 新しい状態を [success (成功)] プレースホルダーにドラッグして、名前を [true (真)] にします。 
  2. 別の新しい状態を [failure (失敗)] プレースホルダーにドラッグして、名前を [false (偽)] にします。

ジャンクションにデータ参照を追加

  1. [Today's Date (今日の日付)] ジャンクションを選択して、設定パネルを開きます。 
  2. [First Value (1 番目の値)] フィールドに、コピーした参照を貼り付けます。
    貼り付けた値は {{states.Get Row.smartsheet.get_row.row.cells.Today.value}} になります。
  3. [Second Value (2 番目の値)] フィールドで、[true (真)] と入力します。 
  4. これまでに作成したものを保存します。

    Brandfolder Image
    Add data reference to the junction

ステップ 6: 最初の API 呼び出しを設定

API 呼び出しのプロファイルを設定する

天気予報データを取得するには、まず米国気象サービスへの API 呼び出しのプロファイルを作成する必要があります。プロファイルは、ワークフローを接続するシステム API の主要情報を保存する手段です。

  1. Bridge アカウントで、[Integrations (統合)] タブに移動します
  2. 「Call API (API 呼び出し)」ユーティリティを選択します。
  3. [Continue (続行)] > [Add to Profiles (プロファイルに追加)] を選択します。

    Brandfolder Image
    Set up a profile for you API calls

     

  4. プロファイルに名前を付けます。それぞれのプロファイル名は一意でなければなりません。たとえば、「US Weather (米国の天気)」などです。
  5. [Base URL (ベース URL)] フィールドに、https://api.weather.gov と入力します。
  6. [Headers (ヘッダー)] ドロップダウンを展開します。
    • [Key #1 (キー #1)] フィールドに、「User-Agent (ユーザー - エージェント)」と入力します。
    • [Value #1 (値 #1)] フィールドに、会社名とメール アドレスを、コンマで区切って入力します。

      これは米国気象サービスの要件で、ログに予期しないアクティビティや行動が見つかった場合に連絡できるようにするものです。

  7. プロファイルを保存します。
  8. ワークフローに戻ります。

 

ワークフローで [Make API Call (API 呼び出しを作成)] モジュールを設定する

最初の API 呼び出しによって、シートに入力された場所のグリッド ビュー ポイントが識別されます。

  1. 検索フィールドを使用するか、[Utilities (ユーティリティ)] > [Utility Functions (ユーティリティ機能)] > [Make API Call (API 呼び出しを作成)] を展開して [Make API Call (API 呼び出しを作成)] モジュールを探します
  2. モジュールを [true (真)] 状態の下のワークフローにドラッグします。
  3. [Make API Call (API 呼び出しを作成)] モジュールで、ドロップダウンから先程作成したプロファイルを選択します。
  4. [Endpoint (エンドポイント)] フィールドに以下のポイントを含めます。points/{{states.Get Row.smartsheet.get_row.row.cells.Longitude.value}},{{states.Get Row.smartsheet.get_row.row.cells.Latitude.value}}
  5. [Method (メソッド)][GET (取得)] に設定します。
  6. ワークフローを保存します。

    Brandfolder Image
    Set up the first API call

グリッド ビュー呼び出し用のデータ参照先

このガイドでは API リクエストの仕組みを理解する必要はないため、上記の URL が作成されています。この URL は、ワークフローをトリガーした列の経度と経度の値を参照しています。

これらの値を自分で取得する場合は、ワークフローをもう一度トリガーする必要があります。この場合、チェックボックスがオンになっていることを確認する必要があります。最初の行を使用するのではなく、新しい列に情報を追加します。また、日付は必ず今日の日付とし、ワークフローがジャンクション左側の分岐に流れるようにします。

座標

米国の気象サービスでは、座標の小数点に最大 4 桁が必要です。

必要な手順

座標は、[Longitude (経度)][Latitude (緯度)] フィールドに入力するためにも必要になります。たとえば、47.6174 と -122.2001 を使用すると、Smartsheet のベルビュー オフィスの天気を取得できます。


ステップ 7: 2 番目の API 呼び出しを設定する

2 番目の API 呼び出しでは、以前に配置されたグリッド ビュー ポイントに基づいて、米国の気象サービスから予報を取得します。これを設定するには、新しい状態と、もう 1 つの Make API Call モジュールをワークフローに追加する必要があります。 

  1. 左側メニュー上のピン留めされたアイテムから、新しい状態をドラッグ & ドロップし、Get Forecast (予報を取得) という名前を付けます。
  2. 次に、新しい状態の下にあるもう 1 つの Make API Call モジュールにドラッグします。
  3. Make API Call モジュールで、ドロップダウンから先程作成したプロファイルを選択します。
  4. エンドポイントフィールドに、以下の内容を含めます。gridpoints/{{states.true.call_api.make_api_call.response.properties.gridId}}/{{states.true.call_api.make_api_call.response.properties.gridX}},{{states.true.call_api.make_api_call.response.properties.gridY}}/forecast
  5. [Method (メソッド)][GET (取得)] に設定します。
  6. ワークフローを保存します。

    Brandfolder Image
    Set up the second API call

予報呼び出し用のデータ参照先

上記のエンドポイントで使用されているデータ参照を自分で取得する場合は、ワークフローをもう一度トリガーします。変更または追加された列に今日の日付が含まれており、チェックボックスがオンになっていることを確認します。

新しい行を作成してシートを保存したら、実行ログから最後の実行を見つけ、最後のステップの Call API: Make API Call (呼び出し API: API 呼び出しを作成) を展開します。[Output (出力)] > [Properties (プロパティ)]で、[gridId (グリッド ID)]、[gridX (グリッド X)][gridY (グリッド Y)] のフィールドを探します。これらの参照先を URL で使用すると、気象サービスを呼び出すことができます。


ステップ 8: 行の更新を設定する

ワークフローで気象データを取得できるようになりました。最後のステップでは、予報を使用してシートを更新します。

シートと行の ID を追加する

  1. ワークフローを再度トリガーします。変更または追加された列に今日の日付が含まれており、チェックボックスがオンになっていることを確認します。
  2. 最後の API 呼び出しモジュールにもう 1 つ状態を追加し、Update Row (行を更新)という名前を付けます。
  3. [Update Row (行を更新)] モジュールを検索するか、[Integrations (統合)] > [Smartsheet] > [Update Row (行を更新)] を展開して見つけます。
  4. 実行ログで、最後の実行の [Trigger (トリガー)] を展開し、シート ID と行 ID の値を見つけます。 
  5. データ参照先を使用して、[Update Row (行を更新)] モジュールの[Sheet ID (シート ID)] と [Row ID (行 ID)] フィールドを設定します。

詳細な予報データ参照先を追加する

  1. 実行ログに戻り、最後のステップ (2 つの Make API Call (API 呼び出しを作成) モジュールの最後) を展開します。7 日間の天気予報を含む米国気象サービスのデータは、さまざまな情報を提供します。 
  2. [Output (出力)] > [Properties (プロパティ)] > [Periods (期間)] > [0] で、現在の天気を見つけます。
  3. このワークフローでは、detailedForecast (詳細な予報) の参照先を使用しますので、データ参照先をコピーします。 
  4. 再度 Update Row モジュールを開き、[Cells (セル)] セクションを展開します。 
  5. 参照先を [Value # (値 #)] フィールドに貼り付けます。貼り付けられた値は以下のようになります。{{states.Get Forecast.call_api.make_api_call.response.properties.periods.0.detailedForecast}} 
  6. [Key #1 (キー #1)] フィールドの列の名前に「Weather Forecast (天気予報)」と入力します。
  7. ワークフローを保存します。

米国の気象サービスが情報を返さない場合にワークフローが失敗しないようにするには、[Value # (値 #1)] フィールドの値を以下のように調整します。{{states.Get Forecast.call_api.make_api_call.response.properties.periods.0.detailedForecast||Unable to fetch weather data}}
こうすることで、detailedForecast (詳細な予報) にデータがない場合、モジュールは「||」の記号の後にあるテキストで行を更新するようになります。

Brandfolder Image
Add detailed forecast data reference

完了したワークフロー

新しい行を追加するたびに、(分岐の左または右の下方向に) ワークフローが実行されます。また、今日の日付が既存の行の日付に設定されている場合にも実行されます。ワークフローが分岐の左側を下方向に進む場合、または [Today (今日)] ボックスがオンになっている場合、シートの天気予報列は自動的に入力されます。