HULFT Squareを使ってSharePointのファイルを自動で取得してみた

# はじめに

SharePointは、Microsoftが提供する企業向けのファイル共有・情報共有サービスであり、特にMicrosoft 365やOffice 365の一部として利用されています。
SharePointの最も基本的な利用用途は、主には企業内でのファイル共有と情報共有となりますが、クラウドストレージサービスとして、社外となる関連会社や取引先ともファイルを簡単に共有できます。


今回はHULFT SquareとSharePointを連携させることによって業務の自動化につながる仕組みを構築していきます。

# 今回やること
HULFT Squareを利用して、SharePointに格納されているファイルをHULFT Square内のストレージへダウンロードします。


①スケジュールジョブを利用し、毎日18時に、SharePointから注文書ファイル（Excel形式）をダウンロードするスクリプトを実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6548989c-e49e-b30b-7bba-d8fc7a70acea.png)



# 検証手順
## Microsoft SharePoint連携用のコネクション作成
:::note info
今回Microsoft SharePoint への認証は**OAuth認証**を使用します。
OAuth認証はID・パスワードベースとは異なるトークンベースの認証です。
認証のためにID・パスワードベースを毎回入力する必要がなく、またトークンには有効期限が設定されているためID・パスワードよりもセキュアな認証方法であると言えます。
:::


### 1.SharePoint接続のコネクション設定
まず、HULFT SquareでSharePoint接続のコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/380bfc31-7d83-1800-2811-90f3dbd1b69c.png)



**［種類］**　に表示される`SharePoint接続`を選択いただき　**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/baf28cc5-c28c-80bf-6381-4d9ec8a91215.png)


任意の　**［名前］**、今回は`SharePointe接続`と入力いただき、**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/da57a7dd-dc58-dfb9-3f90-7342c073296f.png)

**［ドメイン］** にご契約のドメイン名と、**［サイト名］** にダウンロードしたいファイルが格納されているサイト名を設定し、**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5901fc56-d47c-b44f-017e-65fa838bc5b2.png)

:::note info
サブサイトのファイルをダウンロードしたい場合は、**［サイト名］** に　
site名/subsite名 という形で記載します。
:::

**［プロファイル］** を選択し、**［次へ］** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/234cfe74-a55d-8bdc-d2da-c5a1534fcf14.png)

以下をご確認いただき、**［完了］** ボタンをクリックします。これでSharePoint接続のコネクション設定は完了となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4c876dc5-621b-9cbf-4131-0eaf081e6a32.png)




### 2.OAuth認証のコネクション設定（Entra ID側）

HULFT SquareからSharePointへOAuth認証で連携するためには、OAuth認証コネクション設定が必要になります。

OAuth認証のコネクション設定を行うにあたり、Entra ID(旧Azure AD)側に **［アプリの登録］** を行う必要があります。先に、アプリの登録を行います。

Azureのポータルサイトに接続し設定を実施していきます。
[Azureポータル](https://portal.azure.com/#home)

Microsoft Entra IDの **［ビュー］** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a2e30d86-3af6-3122-3d9c-5bd1efb4b2ff.png)

**［アプリの登録］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/915a0c80-7d67-8515-ac58-72606cc03745.png)




**［新規登録］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e216ee4c-30f3-0b0f-8de1-22377a2464fc.png)

任意の　**［名前］**、今回は`HSQ_SharePoint` と入力いただき、
リダイレクトURLには、**［プラットフォームの選択］** では、`Web`を選択し、`https://app.square.hulft.com/connections/oauth2/callback` を入力し、**［登録］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/35c396e2-595b-7ef9-f39f-1b89ef096f9b.png)


:::note warn
HULFT SquareへのリダイレクトURLは固定となります。このまま設定してください。
:::

数秒後、アプリが作成されます。以下の画面で認証に必要な値を取得していきます。


①　**［概要］**　ページで表示される **［アプリケーション (クライアント) ID］**　の値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/da4884f1-d0e8-f785-9bea-b33c5b2676cc.png)


②、③　**［エンドポイント］**　タブで　**［OAuth 2.0 承認エンドポイント (v2)］** 、
　**［OAuth 2.0 トークン エンドポイント (v2)］**  の値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9762f855-8d66-b9a2-bd7b-624c50585ec3.png)


④　**［クライアントシークレット］**  の値を取得します。
**［証明書とシークレット］**　ページで **［新しいクライアントシークレット］**　をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/065081cc-884b-42d6-878d-0fc423752f67.png)


任意の　**［説明］**、今回は`HULFT SquareからSharePointへ接続` を入力して、**［有効期限］** を選択し、**［追加］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/900893ad-0df3-aff9-741a-855b6150d12e.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/bec0b9a5-684b-63f0-e75e-b5935f77ed2c.png)

:::note alert
必ず **［値］** を控えておいて下さい、一度しか表示されません。
:::

次にAPIのアクセス許可設定を実施していきます。
**［API アクセス許可］**　ページで **［アクセス許可の追加］**　→ **［SharePoint］** をクリックします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5bd963ef-f78d-f3e7-d60a-b1a91665c985.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ad08703d-1da0-ee07-bf69-f7fb4c697da5.png)


 **［委任されたアクセス許可］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d9c11681-e511-d0ff-6500-8e8c393bc5f1.png)

 以下の3つにチェックしてください。
 AllSites.Manage
 AllSites.Read
 AllSites.Write

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2cb45b78-9a3f-f05f-8984-d337b7d2382e.png)



続けて、**［API アクセス許可］**　ページで **［アクセス許可の追加］**　→ **［Microsoft Graph］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ce12aa90-35f2-1ab9-9358-407ad08268e1.png)

 **［委任されたアクセス許可］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ff18ab52-e60d-b67d-0d25-cbffdf64d7e9.png)
検索窓に`offline_access`と入力し、アクセス許可に表示される　**［offline_access］**　にチェックを入れ、**［アクセス許可の追加］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4fcdcee9-8dd3-e449-2c66-3aab1f994eb5.png)


管理者の同意を与えてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/33e14297-d7c2-98b6-c0ea-d80a1710c4d8.png)



### 3.OAuth認証のコネクション設定（HULFT Square側）
続いてHULFT SquareでOAuth認証用のコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8656e05a-7580-0397-94fa-8d1b0109408d.png)


任意の　**［名前］**、今回は`OAuth 2.0認証_SharePoint`と入力いただき、**［次へ］** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/64ac77b3-529e-85a5-005d-796b612a30f8.png)


**［2.OAuth認証のコネクション設定（Entra ID側）］** で取得した値を設定して、リフレッシュトークンを発行します

**［スコープ］**　：`Offline_access`と`https:/ドメイン/.default`を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7da6ac21-3802-51ca-c635-7f3fc7a40b8e.png)


下記画面に遷移後、**［承諾］** ボタンをクリックすると、リフレッシュトークンが発行されます。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/949ceba5-5bf2-6dd9-b7e9-a7e381705244.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0aec2d79-331a-6a12-c68d-9bf24585d6c7.png)

**［適用］**　ボタンをクリックします。これでOAuth認証用のコネクション設定は終了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f435e903-c40d-ca9c-68b5-afad14210d50.png)



## スクリプト作成

今回は「SharePoint連携」プロジェクト配下に`SharePoint_ダウンロード`というスクリプトを作成します。

**[HULFT Square Designer]** を起動し、スクリプトを作成していきます。

**[ツールパレット]**　より　**[クラウド＞SharePoint＞ドキュメントダウンロード]**　アイコンを選択しドラッグ＆ドロップしてスクリプトキャンバスへ配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6f4d2ee7-6f09-1b33-52eb-7d9f171c490c.png)


**[必須設定]**　タブを設定します。

**[名前]**　任意の名前、今回は`ドキュメント_ダウンロード`を入力
**[コネクション]**　**[1.SharePoint接続のコネクション設定]**　で作成した`SharePoint接続`コネクションを選択
**[認証コネクション]**　**[2.OAuth認証のコネクション設定]**　で作成した`OAuth 2.0認証_Sharepoint`コネクションを選択

**[接続テスト]** を実行して、接続に成功することを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/518c23a3-784d-aaed-dc2f-b4a6308de009.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e76b186e-2042-c877-8b70-69f55d2207ee.png)

次に、**[ライブラリ名を検索...]** を実行して、ライブラリ名を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d709eb43-e048-c103-2f93-78e7f983aadf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/842bc203-cc5b-c141-2652-c69a4d330d13.png)

**[ライブラリ名]**　は`ドキュメント`を選択し、
**[ファイルパス]**　にSharePointのサイトの取得したいファイル名を指定し、
**[ストレージファイルパス]**　にダウンロード先となるHULFT Squareのストレージのパスを指定したら、**［完了］**　ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/73eae13c-8008-89d9-2cca-eea4b68e6a29.png)






下記のように　**[start]**　から　**[END]**　までドラッグ＆ドロップでプロセスフローの矢印を繋ぐとファイルアンロード用スクリプトの完成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9d881373-51f4-d021-6ade-744059a0cfa5.png)




## スケジュールジョブ設定
SharePointファイルのダウンロード用スクリプトを実行するスケジュールジョブを設定します。

以下のようにスケジュールジョブを登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2415ac31-aa4e-ce49-6ae7-f83fad2c4043.png)

:::note info
スケジュールジョブの設定は、HULFT Squareのチュートリアル「[スクリプトの実行スケジュールを設定してみよう](https://www.hulft.com/help/ja-jp/HULFTSquare/Content/TOP/Tutorial/tutorial_scheduling.htm)」をご参照ください。
:::

## 検証結果確認

指定した18時にスケジュールジョブが起動され、該当のストレージにファイルが作成されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6400b9dc-01d5-69d1-7d53-e09b795d1926.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3c6678cd-7927-7a79-327a-97d75606a4f1.png)



# 終わりに
いかがだったでしょうか。HULFT SquareとSharePointをつないで、よりデータを有効活用していただきたいと思います。

当記事が、業務改善の一助になれば幸いです。それではまた！