2020年12月17日 (木)

[Office Scripts] Excel 内のデータを使って SharePoint ライブラリのプロパティを自動設定しよう

SharePoint のドキュメント ライブラリでは任意のプロパティを持たせることができます。これにより、ファイル名からだけだと内容が推測できない場合も、プロパティを見ればおよそ内容が把握できるようになります。このプロパティの値は、ファイルをアップロードするたびにユーザーがつど設定する必要があり、なかなか面倒です。

2020-12-17_23-52-15

たとえば、 Excel のファイルを例に、SharePoint のライブラリに Excel ファイルがアップロードされたら、自動的にファイルの内容を読み取って必要な情報をプロパティに設定してもらえるようにしたい。

そこで登場するのが Office ScriptsPower Automate です。

なお、この記事は Office 365 Advent Calendar 2020 に参加しています。

Office 365 Advent Calendar 2020

Office Scripts は Web用の Excel (Excel Online) 上で利用できるスクリプトであり、TypeScript で記述します。これと Power Automate を組み合わせると実に様々な処理が可能です。とはいえ、Office Scripts を利用するには Office 365 E3 または E5 のライセンスが必要であり、テナントレベルで機能がオンになっている必要があります。既定でオンになっていますが、テナント管理者のさじ加減で設定がオフにされていることもあるので、組織内で確認してください。また Office Scripts は 2020 年12月、現在まだプレビューの状況です。

実際の動作を確認するためにデモンストレーションと構築方法をビデオで公開しました。詳しくは次のビデオ (YouTube) をご参照ください。

ビデオの補足情報

SharePoint サイト側では任意のドキュメント ライブラリを用意します。このデモでは次の列を4つ追加しています。

  • 見積金額…通貨
  • 組織名…1行テキスト
  • 部署名…1行テキスト
  • 担当者名…1行テキスト

Excel は次のサンプルファイルを用意しています。類似したファイルを用意して試すとよいでしょう。

2020-12-18_0-00-13

Office Scripts は次のようなスクリプトを用意しています。

2020-12-18_0-03-06

これを次のような Power Automate のフローで呼び出します。

2020-12-18_0-11-29

 

コメント

初めまして、いつも勉強の参考にさせて貰っています。
こちらのOfficeScriptsによる読み込みに関して参考に自分でも作成しました、
概ねスクリプトの作成とそれによるデータの抽出はうまくいったのですが最後の更新でどうしてもエラーになってしまいます。

アクション 'ファイルのプロパティの更新' に失敗しました
"********.xlsx" は、共有するために ******** によってロックされています。

以上のようなアラートがPowerAutomate上で出現するのでファイルがユーザーが編集状態のままなので入力ができなくなってると思いますがこれはどういった原因で何か解決できる設定があるのでしょうか。

キナーさん、なるほど、エラーとなるのですね。状況を詳しく確認しないと分からない部分もあるように思いますが、ブログは業務外として行っているためサポートまではできないので、ヒントとなるのではないかと思うところをご案内しておきます。
まず、メッセージの内容を見ると文字通りファイルを開いたまま試しているか誰かが編集しているかしているのではないかと思います。SharePointコネクターの項目の更新アクションはファイルが開いたままでは処理できないようになっています。ファイルがロックされる状況というのはいくつか条件が考えられますが、時々ロックがされたまま、解除されないこともあります。そうした場合は30分程度放置すると開放してくれるのですが、まずはファイルがご自身を含め誰かによって開かれていないか確認してみてください。
Excelファイルのロックに関してはのリンク先も参考になると思います。
https://support.microsoft.com/ja-jp/office/excel%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E7%B7%A8%E9%9B%86%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AB%E3%83%AD%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B-6fa93887-2c2c-45f0-abcc-31b04aed68b3

キナーさん、改めて手元の環境でフローを実行してみたところ、ファイルがロックされる現象がこちらでも再現されました。フローは変更しておらず、以前は動作していたので、内部的な挙動が変更されているようです。対応方法を改めて下記リンク先に公開しました。
https://shanqiai.weblogs.jp/sharepoint_technical_note/2021/06/officescript-troubleshooting-filelock.html