Microsoft Graph を使って Excel のサーバーサイド オートメーションを実現する
はじめに
みんな大好き Excel ということで、Excel のサーバーサイド オートメーションは、昔から様々な手法によって実現されてきました。サポートされない (意味深) 方法 であったり、サードパーティの製品に頼らなければいけなかったのですが、現在では Microsoft Graph を使うことで、サーバーサイドで Excel を作成することができるようになりました。
やりたいことをざっくりとまとめると以下のような感じになります。
- Excel のテンプレートを SharePoint サイトの任意の場所に置く
- Excel のテンプレートをコピーする
- コピーしたファイルに値を書き込む
- 書き込んだファイルをダウンロードする (Azure Blob Storage などに保存する)
実行手順
具体的に API を見ながら実装方法を確認します。
Excel のテンプレートを SharePoint サイトの任意の場所に置く
これは自動化する必要はないので手動でやればいいですね。もしテンプレートの自動更新のようなことを行いたい場合はファイルのアップロードができます。
Excel のテンプレートをコピーする
ファイルのコピーは copy
メソッドを使います。コピーは driveId
を指定できるので、SharePoint サイト間や SharePoint から OneDrive for Business へのコピーも行うことができます。
コピーしたファイルに値を書き込む
セルに値を書き込むには range
に対して PATCH
要求を実行します。値を設定できるほか、数式や書式を設定することもできます。値は二次元配列で指定するのがミソです。
また、大量の値を書き込む場合は、パフォーマンスを向上させるためにセッションを使うのがいいでしょう。
書き込んだファイルをダウンロードする
作成したファイルは content
プロパティでダウンロードできます。GET
要求を投げるとダウンロードのための一時的な URL にリダイレクトされ、そこからファイルをダウンロードできるようになります。
おわりに
今回はファイル操作と Excel 操作だけでしたが、たとえば申請書の宛先に上司の名前を自動的に設定するために manager
を使ったり、作ったファイルをダウンロードせずに URL をメールで送ったり、いろいろなバリエーションが考えられると思います。ぜひ Microsoft Graph を使って自由なプログラミングを体感していただければと思います。
Discussion