【一般】HTML Post時にユーザートークンを使用してみる

今回は、[Sharperlight](https://www.sharperlight.com/) **クエリビルダー** において拡張式を使用し、事前に定義されたスケジュールタスクを実行します。
使用する拡張式の関数は「HTML Post Web Page Content with authorization header」です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/7bc67d52-8f2c-e1b4-5a8f-42d65a5d5360.png)
これを使用するには、最初に Authorization Header に使用されるトークンを生成する必要があります。

## トークンの生成 ##
[Sharperlight](https://www.sharperlight.com/) **サイトセットアップ**を開始します。管理者権限をもつAdminユーザーでトークンを生成してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/dace7f8e-1aea-9d97-6690-d6c067d6fc89.png)
Adminユーザーを選択し、右クリックメニューから, `クライアントの秘密/フィードキー` -> `作成`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/bbf58bcc-9dca-9d5a-72e2-44e4beda35cf.png)
`クライアントの秘密/フィードキー` ダイアログが開き、生成されたトークンが確認できます。
**説明**および**有効期限**を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/cc1dc9c4-39f7-d0ed-434c-a087f6a83748.png)
`クリップボードにコピー`ボタンを利用して、生成されたトークンをクリップボードにコピーします。
それから`OK`ボタンをクリックし保存します。
コピーしたトークンはしばらくどこかに保存しておきます。

## 公開レポートの作成 ##
Sharperlight **パブリッシャー**を起動し、`新規`ボタンで新しい公開レポートの定義を開始します.

`グループ`, `コード`そして`タイトル`を記入し、`クエリーを編集`ボタンで**クエリビルダー**を起動します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/160d0058-e865-a24e-1519-2644b7c49d14.png)
このクエリは、スケジュールタスクを実行するためだけのものなので、このように「製品」には **システム**、「テーブル」には **ユーザーアカウント** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/cc64fbc2-9af8-aff4-c7e5-336757962f45.png)
**出力**領域で右クリックメニューから`拡張表現を追加`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f79f8bdc-d768-4b88-23c4-a7502e4e7a69.png)
拡張表現ダイアログでは検索フィールドに**post**と入力し、表示される関数を絞り込みます。
そして`HTML Post Web Page Content with authorization header`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9c1f78f0-eaa3-4303-cc20-ee65a35d509c.png)
ダブルクリックすることで、テンプレートが拡張式関数の構文フィールドに生成されます。
関数は3つの引数を必要とします。それらは**POST対象のURL**, **Postするデータ**そして**Authorization Header**です.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a81044cc-a585-5a89-6c35-7801965aefd9.png)
今回はこの関数を利用して定義済みのスケジュールタスクを実行させたいので、式はこのようになります。
第三のパラメータとして渡す場合
```
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"
,""
)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/7137ce67-dd0b-5ef2-1fa5-4670797aa795.png)
1. スケジュールタスクを実行するための対象URL. コントロールタグ`{_System.Rest.URL}`は、実行時に正しいsharperlightサービスＵＲＬに読み替えられます。
2. 実行したいスケジュールタスクの`グループ`と`コード`、および上記で生成したトークンをここで使用。
3. 第三のパラメータは空白を設定。 

`ＯＫ`で保存します。
作成された拡張表現の名前を`Trigger Task`と変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/69d2c1d9-5253-8984-6669-5ed3deb83357.png)
## 動作確認 ##
`プレビュー`ボタンで動作確認を行います。作成した拡張表現が実行され、指定したスケジュールタスクが実行されるはずです。Sharperlightサービスの起動をお忘れなく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f762eb25-0b3a-f9d6-1e4a-bcd31d4be2c5.png)
実行結果はこのようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1919a6bb-a8e1-95dd-ec11-947167d1b876.png)
タスクが正しく実行されたかを確認してみます。
Sharperlight **スケジューラ**を起動して、対象タスクを開きます。
履歴タブを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4f101eec-af72-f0f3-8fd6-1017c24eb4b6.png)
ログに実行履歴が記録されていました。上手く実行されたようです。

クエリのプレビューで動作確認ができたので、クエリを保存し、更に公開レポートも保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0b2dafca-b131-daa1-2fbc-8cd969866195.png)

これでこのレポートがブラウザで開かれる度、クエリ内で指定したスケジュールタスクが実行されます。
```
https://{your domain name}/{your sharperlight service code}/Report/?query=QiitaSample.PostWithTokenJP   
```

では、失礼します。