💼

Microsoft Graph を使って Excel のサーバーサイド オートメーションを実現する

に公開

はじめに

みなさんがよく利用する Excel ですが、Excel のサーバーサイド オートメーションは、昔からさまざまな手法によって実現されてきました。サポートされない方法 や、サードパーティ製品に頼る必要がありましたが、現在では Microsoft Graph を使うことで、サーバーサイドで Excel を作成できるようになりました。

やりたいことをまとめると、以下のようになります。

  • Excel のテンプレートを SharePoint サイトの任意の場所に置く
  • Excel のテンプレートをコピーする
  • コピーしたファイルに値を書き込む
  • 書き込んだファイルをダウンロードする (Azure Blob Storage などに保存する)

実行手順

具体的に API を見ながら実装方法を確認します。

Excel のテンプレートを SharePoint サイトの任意の場所に置く

この作業は自動化する必要がないため、手動で実施してください。もしテンプレートの自動更新などを行いたい場合は、ファイルのアップロードが可能です。

https://docs.microsoft.com/ja-jp/graph/api/driveitem-put-content?WT.mc_id=M365-MVP-5002941

https://docs.microsoft.com/ja-jp/graph/api/driveitem-createuploadsession?WT.mc_id=M365-MVP-5002941

Excel のテンプレートをコピーする

ファイルのコピーには copy メソッドを使用します。コピーは driveId を指定できるため、SharePoint サイト間や SharePoint から OneDrive for Business へのコピーも可能です。

https://docs.microsoft.com/ja-jp/graph/api/driveitem-copy?WT.mc_id=M365-MVP-5002941

コピーしたファイルに値を書き込む

セルに値を書き込むには range に対して PATCH リクエストを要求します。値の設定だけでなく、数式や書式の設定も可能です。値は 2 次元配列で指定します。

https://docs.microsoft.com/ja-jp/graph/api/range-update?WT.mc_id=M365-MVP-5002941

また、大量の値を書き込む場合は、パフォーマンス向上のためにセッションを利用することをおすすめします。

https://docs.microsoft.com/ja-jp/graph/api/workbook-createsession?WT.mc_id=M365-MVP-5002941

書き込んだファイルをダウンロードする

作成したファイルは content プロパティでダウンロードできます。GET 要求を送信すると、ダウンロード用の一時的な URL にリダイレクトされ、そこからファイルをダウンロードできます。

https://docs.microsoft.com/ja-jp/graph/api/driveitem-get-content?WT.mc_id=M365-MVP-5002941

おわりに

今回はファイル操作と Excel 操作について紹介しました。たとえば申請書の宛先に上司の名前を自動的に設定するために manager を使ったり、作成したファイルをダウンロードせずに URL をメールで送信したり、さまざまなバリエーションが考えられます。ぜひ Microsoft Graph を活用して自由なプログラミングを体験してください。

Discussion