SharePoint コネクタで出来ること
非常に多くのアクションが、SharePoint コネクタで実行することができます。
一方でリストを作成する
となると、SharePoint に HTTP要求を送信するアクションで対処する領域のようです。
リストを作成
に焦点をあてて、アクションを見ていきたいと思います。
Excelから次の段階へ進めるSharePoint Lists
あらためてDX推進を担うにあたり、SharePoint Lists
の強みは常々感じます。
Microsoft 365
の強み、APIでサービスの間をつなげるという意味でも、
SharePoint Listsは、最も身近で優秀なパートナーです。
GPT的な文章ですが、自分による作成文章です
理由は、共同作業向けのテーブル
であり、コンフリクトを防ぐことができたり
、データ型や入力規則を定義できる
というメリットが挙げられます。
復元
も気軽にできたりと万々歳🙌
自由度が高い分、Excel
が好まれることも重々理解しておりますが、まずは今Excel
で担っているタスクを、SharePoint Lists
に置き換えてみるだけでも、業務のシーンは大きく変わるのではないでしょうか。
そんなSharePoint Lists
ですが、リストそのものを作成するために、結構なクリックを個人的には 要すると感じています。
そんなにリストをパカパカ作るな!という助言はあると思いますが、準備が手間です。
- データ型の設定
- 内部名・表示名を意識した設定
- コピペでサクっと準備できない
こういったことが、私は! ムムム🧐と感じることが多いです。
ExcelやCSVからサクっと作る手段もありますが、
内部名・表示名を意識した設定
が上手く反映されなかったりと、ムムム🧐と感じてしまいます。
SharePoint Online 管理シェルを使うことができれば、サクっといけそうですが、一般の従業員にそんなものは使わせていただけることは、まずないでしょう。
Power Automateで解決してみよう!
そんなこんなで、Power Automateを使って、この問題を解決してみます。
Graph APIを使ってみましょう。
SharePoint REST APIでやっているパターンは、ほかにも書いている人がいるのでやめておきました。
新しいリストを作成する 方法
Microsoft learnに記載がありますね。
これをPower Automate
で実行すると、下記のようになります。
項目 | 設定値 |
---|---|
サイトのアドレス | 対象のSharePointサイト |
方法 | POST |
URI | _api/v2.1/sites/root/lists |
{
"displayName": "Books",
"columns": [
{
"name": "Author",
"text": { }
},
{
"name": "PageCount",
"number": { }
}
],
"list": {
"template": "genericList"
}
}
learnと異なっているのは、name
プロパティがdisplayName
になっていることです。
name
のままだとエラーになります。
learnの例を見ると、URIは
/sites/{site-id}/lists
となっていますが、特定の子に位置するサイトではないため、root
で指定しています。
_api/v2.1/sites/root/lists
site-id
を調べる方法は、
https://<tenant-name>.sharepoint.com/sites/<site-name>/_api/site/id
SharePointサイトのアドレスの末尾に/_api/site/id
を添えて、GET
要求を送信すれば取得できます。
こんな感じでd.Id
としてsite-idが表示されます。
さて、リストの作成に話を戻すと、下記のようにリストがサクっと作られることがわかります。
今回送信した要求のうち
{
"list": {
"template": "genericList"
}
}
こちらの"template": "genericList"
は、タイトル列のみが含まれる空白のリスト
に該当します。
使ってみるとわかりますが、タイトル列が入力必須になっていることが、少しムムム🧐ポイントです。
とはいえ、1秒で出来るのは嬉しい✨
以下に、画像の情報を文字起こしし、対応するJSONプロパティを表にまとめました。
列の情報の種類と対応するJSON
今回紹介するのは、検証できた下記の種類!
列の種類 | JSON |
---|---|
1行テキスト | "text": {} |
複数行テキスト | "text": {"allowMultipleLines": true} |
選択肢(メニューから選択) | "choice": {"choices": []} |
数値(1、1.0、100) | "number": {} |
通貨($, ¥, €) | "currency": {} |
日付と時刻 | "dateTime": {} |
参照(このサイトにある既存の情報) | "lookup": {} |
はい/いいえ(チェック ボックス) | "boolean": {} |
ユーザーまたはグループ | "personOrGroup": {} |
ハイパーリンクまたは画像 | "hyperlinkOrPicture": {} |
集計値(他の列を基にした計算結果) | "calculated": {} |
改めてみると列の種類が多い!
設定値まで含めると、範囲が膨大になるため、基本的な記法に限定して書きます!
■ 基本的な列の構成は、下記のようになります。
{
"name": "内部名",
"displayName": "表示名",
"text": {}
}
name
が内部名
、displayName
が表示名
です。
別々に指定できるのが、ほんっとうに嬉しい!✨
列ごとのJSONの例
1行テキスト
こちらで作成してみると
{
"name": "InternalTextFieldName",
"displayName": "表示名だよ",
"text": {}
}
良い感じに・・・👀✨
内部名も反映されている🙌
複数行テキスト
text
のallowMultipleLines
をtrue
にすることで設定できます。
{
"name": "InternalTextFieldName",
"displayName": "表示名だよ",
"text": {
"allowMultipleLines": true
}
}
選択肢(メニューから選択)
選択肢はchoice.choices
から配列で選択肢を指定します。
{
"name": "ChoiceField",
"displayName": "選択肢項目",
"choice": {
"choices": ["1", "いち", "わん"]
}
}
数値(1、1.0、100)
数値は、シンプルにnumber
を指定すればOK!
{
"name": "NumberColumn",
"displayName": "数字",
"number": {}
}
通貨($, ¥, €)
数値
と通貨
は別もの💰
{
"name": "CurrencyColumn",
"displayName": "通貨型",
"currency": {}
}
日付と時刻
dateTime
で指定すると、時間を含める
にチェックが入った状態で作成されます。
{
"name": "DateTimeFieldColumn",
"displayName": "日時",
"dateTime": {}
}
dateTime
に`"format": "dateOnly"を設定すると、日付のみになります。
{
"name": "DateFieldColumn",
"displayName": "日付",
"dateTime": {
"format": "dateOnly"
}
}
はい/いいえ(チェック ボックス)
はい/いいえ
はBoolean
で設定できます。
{
"name": "Boolean",
"displayName": "はい、いいえ",
"boolean": {}
}
ユーザーまたはグループ
personOrGroup
は、デフォルトでグループの選択を許可
{
"name": "PersonGroup",
"displayName": "人やグループ",
"personOrGroup": {}
}
ハイパーリンクまたは画像
ハイパーリンク
は、そのまんま
{
"name": "HyperlinkField",
"displayName": "ハイパーリンク",
"hyperlinkOrPicture": {}
}
集計値(他の列を基にした計算結果)
集計列も作れてしまう!
{
"columns": [
{
"name": "Column1",
"displayName": "Column1",
"number": {}
},
{
"name": "Column2",
"displayName": "Column2",
"number": {}
},
{
"name": "SUM",
"displayName": "足し算",
"calculated": {
"formula": "=([Column1]+[Column2])"
}
}
]
}
おわりに
非常に大変な実験でした・・・。
_api/v2.1/sites/root/lists
でチャレンジした結果、かなり労力がかかりました。
列の詳細設定など深堀できるところは、まだまだあるので、今後もアップデートしていきたいと思います!
温かい目で見守ってください🐟✨