今回は、Sharperlight クエリビルダー において拡張式を使用し、事前に定義されたスケジュールタスクを実行します。
使用する拡張式の関数は「HTML Post Web Page Content with authorization header」です。
これを使用するには、最初に Authorization Header に使用されるトークンを生成する必要があります。
トークンの生成
Sharperlight サイトセットアップを開始します。管理者権限をもつAdminユーザーでトークンを生成してみます。
Adminユーザーを選択し、右クリックメニューから, クライアントの秘密/フィードキー
-> 作成
を選択します。
クライアントの秘密/フィードキー
ダイアログが開き、生成されたトークンが確認できます。
説明および有効期限を設定します。
クリップボードにコピー
ボタンを利用して、生成されたトークンをクリップボードにコピーします。
それからOK
ボタンをクリックし保存します。
コピーしたトークンはしばらくどこかに保存しておきます。
公開レポートの作成
Sharperlight パブリッシャーを起動し、新規
ボタンで新しい公開レポートの定義を開始します.
グループ
, コード
そしてタイトル
を記入し、クエリーを編集
ボタンでクエリビルダーを起動します。
このクエリは、スケジュールタスクを実行するためだけのものなので、このように「製品」には システム、「テーブル」には ユーザーアカウント を選択します。
出力領域で右クリックメニューから拡張表現を追加
を選択します。
拡張表現ダイアログでは検索フィールドにpostと入力し、表示される関数を絞り込みます。
そしてHTML Post Web Page Content with authorization header
を選択します。
ダブルクリックすることで、テンプレートが拡張式関数の構文フィールドに生成されます。
関数は3つの引数を必要とします。それらはPOST対象のURL, PostするデータそしてAuthorization Headerです.
今回はこの関数を利用して定義済みのスケジュールタスクを実行させたいので、式はこのようになります。
第三のパラメータとして渡す場合
UrlContentPost( "{_System.Rest.URL}SchedulerTaskPost"
, "&task=QiitaStat.PostedItemsGet&response=json"
"SLCS_34346537333..................2633234375aZ"
)
あるいは、Bodyに設定する場合
UrlContentPost( "{_System.Rest.URL}SchedulerTaskPost"
, "&task=QiitaStat.PostedItemsGet&response=json"
+ "&userToken=SLCS_34346537333..................2633234375aZ"
,""
)
- スケジュールタスクを実行するための対象URL. コントロールタグ
{_System.Rest.URL}
は、実行時に正しいsharperlightサービスURLに読み替えられます。 - 実行したいスケジュールタスクの
グループ
とコード
、および上記で生成したトークンをここで使用。 - 第三のパラメータは空白を設定。
OK
で保存します。
作成された拡張表現の名前をTrigger Task
と変更します。
動作確認
プレビュー
ボタンで動作確認を行います。作成した拡張表現が実行され、指定したスケジュールタスクが実行されるはずです。Sharperlightサービスの起動をお忘れなく。
実行結果はこのようになりました。
タスクが正しく実行されたかを確認してみます。
Sharperlight スケジューラを起動して、対象タスクを開きます。
履歴タブを確認します。
ログに実行履歴が記録されていました。上手く実行されたようです。
クエリのプレビューで動作確認ができたので、クエリを保存し、更に公開レポートも保存します。
これでこのレポートがブラウザで開かれる度、クエリ内で指定したスケジュールタスクが実行されます。
https://{your domain name}/{your sharperlight service code}/Report/?query=QiitaSample.PostWithTokenJP
では、失礼します。