Community で人気のコメント(2) 親行・子行セットの自動追加
Smartsheet Community (英語版)で人気のコメントのうち、「いいね!」と思ったものをご紹介します。
第2回目は、Smartsheetの コミュニティでの数式の達人、ポール・ニューカム( @Paul Newcome )さんがベストプラクティスとして提案した、「子行をAPIやブリッジを使わずに自動で作る」についての記事です。
https://community.smartsheet.com/discussion/comment/420406#Comment_420406
はじめに
プロジェクト管理などのシートに、メインタスクとそれを構成するサブタスク(子タスク)をフォームなどで自動追加したい場合、 Smartsheetの数式には自動でインデントを作る機能がないので、インデント付きの行の追加の機能のあるSmartsheet APIやブリッジ * を使う必要がありました。
ポールさんの提案した方法を使えば、フォームに親行を構成する列の情報(タスク名、説明、連絡先、ドロップダウンリストなど)を入力すると、その親行とそれに付属するインデントされた子行(子タスク・サブタスク)のセットを自動的に作成することができます。
*ブリッジとはSmartsheetでプログラム的な操作を行うことができるプレミアムアプリです。
階層構造の親タスク・サブタスクのセットが自動追加されたシート(選択されているエリア)のイメージ
https://app.smartsheet.com/b/publish?EQBCT=ed3f653f80b043758a23e54fb59e8168
入力フォームのイメージ
https://app.smartsheet.com/b/form/eeedf60c1f164e06a36e5507ba66275d
具体的方法
フォームシートを用意
まず、親タスク・サブタスクのセットを自動追加するシート以外に、上記のフォームのデータが入力される別のシート(フォームシート、下のイメージ)を用意します。
https://app.smartsheet.com/b/publish?EQBCT=9a4853f69e2240398a3bd726a76e8b34
フォームシートの構造
フォームシートには親行として自動追加する列と同じ構造のフォーム入力用の列を追加します。例えば、上のイメージで言えば、親行として用いるタスク名、説明、日付などの各列に対応して、 F_タスク名、F_説明、F_日付などの列を追加します。 (F_はフォームからくるという意味ですがポールさんの例のようにForm Field A, Form Field Bなど任意の名前で大丈夫です。)
自動追加の仕組み
ポールさんの方法は、Smartsheetのフォーム、数式、自動化などの機能を組み合わせて実現しています。
フォームの新しいエントリーがデフォルトでシートの下部に追加されることを利用
まず、フォームがデフォルトでは最後の行に追加されることを利用しています。このことを利用して、直近に追加されたデータが最下行にあるので、以下の数式を第1行目のタスク名、説明、日付などの各列に置くことで、第1行目に新しいデータがフォームから入力されたときに、そのデータでタスク名、説明、日付などの値を更新することできます。
タスク名 =INDEX([F_タスク名]:[F_タスク名], MATCH(MAX([行 ID]:[行 ID]), [行 ID]:[行 ID], 0))
説明 =INDEX([F_説明]:[F_説明], MATCH(MAX([行 ID]:[行 ID]), [行 ID]:[行 ID], 0))
日付 =INDEX([F_日付]:[F_日付], MATCH(MAX([行 ID]:[行 ID]), [行 ID]:[行 ID], 0))
式を少し説明すると、行 IDは自動番号で、MATCH(MAX([行 ID]:[行 ID]), [行 ID]:[行 ID], 0)で一番最後の行の行 ID(上のイメージでは7)を取得します。(ここで使われているMAX([行 ID]:[行 ID])は、最下行などを取得するときによく使われるテクニックです。)
次に、INDEX(INDEX([F_タスク名]:[F_タスク名], 7) により7行目のF_タスク名にある列名の変更の値を取得します。
自動化の行のコピーでインデントされた子行もコピーされることを利用
以上により、フォームから新しいエントリーがあると、第1行目のタスク名、説明、日付などの値が更新されます。この値の更新をトリガーとして、その行を親行、子行のセットを追加したいシート(最上部のワーキングシート)にコピーする自動化を設定します。
自動化で行がコピーされるとき、インデントされた子行も一緒にコピーされるので、結果として、親行、子行が目的のシートに自動追加されます。
まとめ
プロジェクト管理などのシートに、メインタスクとそれを構成するサブタスク(子タスク)をフォームなどで自動追加したい、といった場合に、もちろんAPIやブリッジなどの高度な機能を用いて実現することもできますが、今回のポールさんの提案の優れているところは、既存のSmartsheetの機能をうまく組み合わせて、実用的な代替手段を提供しているところです。
Smartsheetの コミュニティではポールさんのようなグル(guru)が様々なクリエイティブな利用方法を発表しており、Smartsheetユーザにとっての知識の宝庫です。
ヘルプ & ラーニング センター
Categories
- All Categories
- 14 Welcome to the Community
- Smartsheet Customer Resources
- 64.1K Get Help
- 412 Global Discussions
- 221 Industry Talk
- 459 Announcements
- 4.8K Ideas & Feature Requests
- 143 Brandfolder
- 141 Just for fun
- 58 Community Job Board
- 461 Show & Tell
- 31 Member Spotlight
- 1 SmartStories
- 299 Events
- 38 Webinars
- 7.3K Forum Archives