背景
ある会合で参加者の情報を Excel 提出して集めてたが、横断で見るなんて面倒
で、当然集約する必要が出た。
アンケートサービスで収集してればこんな作業不要なんですけどね・・。
Excel 大好きさんはいまだに多いので、API 利用チャンスと捉えて作ってみることにした記録
以下で準備してたら早速使いどころがあったというお話
概要
- Backlog API でファイル取得
- ファイルから Office Scripts でデータ取得
- 取得した結果から Wiki Contents 生成して、Upload
Backlog ファイル からファイルを取得して、OneDrive へ保存
Excel からのデータ取得 by Office Scripts
取得結果を元に、Backlog wiki を更新
全員分まだそろってないので、上手くいったら定期的に実行しておくだけじゃないかな、と
疑問点
まったく同一の wiki を更新した場合、更新検知はされるのか?
Yes → ファイル取得時に周期内の更新がある場合のみに動作に、かな。
No → メール通知も有りで、放置しておけば、差があるときだけ通知されていい感じ
課題と解決策
wiki の Update API を使うと、差分が無くても更新扱いになる
差分無ければ更新されないかな、とか思ったんだけど・・ダメでした
解決策
- 事前に差分確認して Update 判断をしておくだけ
ファイル作成には上書きオプションがない
解決策
- 事前に OneDrive のフォルダを空にしておく
外部ファイルのコンテンツ情報から ファイルを作成する アクションでファイルを作成するわけだが、コピーアクションなどと違って、上書きオプション等がない。故に、先にフォルダ内を全部消しておく方が良い。そうしないと削除直後に作成をしてしまい、Lock に引っかかると思われる。
Excel ファイルだから・・書式がいい加減
解決策
- Office Scripts で頑張って処理する・・
方眼紙エクセルまで酷くは無くても似たようなものなので、以下のような点も気を付けて JSON Object として取得する
- 単一セルに入ってるか確定してない
- 人によっては、項目と値を同一セルに書き込んでる。例)「名前:〇〇 太郎」が同一セル
クエリパラメータをURL パラメータとして使うと文字数制限がある
解決策
- Body に渡して使う
API の記述をちゃんと見てれば、見分けられたとは思うんですが・・Web 開発経験の浅さのせいですね。
Wiki でテーブルを作る際に列が多くて狭くなった
解決策
- リンク表記を使って、インチキポップアップを
こんな感じ。ただし、URLを書くべき括弧内に、括弧や空白があると反応しなくなるので、Encode か全角変換が必要。encodeUriComponent が楽かな。
[名前](会社名)
[Date](DateTime)
ファイルの作成者が複数同じになっていた(代理投稿だそうな)
解決策
- ファイル内にある「社名/個人名」を取得
特定のセルに書いてるわけじゃないので、面倒だけど、まぁ、Office Scripts でよしなに
存在するファイルより何故か少ない情報がWikiにあがる
問題点
- 多分・・ファイルを作成する が確定する前に、フォルダー内のファイルを検索 をしてるせい?
解決策
- とりあえず、Delay で様子見
あとがき
Data Loss Policy の関係上会社では外部APIを使えないけど、やっぱり使えるようにしてくれると色々と捗るよねって思った。