背景
Planner を自動化している人からの質問で、バケット名が取れない!って話があったので調べてみた記録
概要
- Planner のコネクターを調べると、バケット名が取れるのは バケットの一覧表示 のみ
で、その 取得結果 はこんな感じ
ということで、方針は
- バケットID と バケット名 の一覧を用意
- 取得したいバケットID に該当するバケット名を取得する
ってことだけど・・
バケット一覧を取得しようとするとある課題が・・
- グループID
- プランID
の二つが必要
で、グループ、プラン、バケットの関係は以下なので、
- グループ
- プラン
- バケット
- プラン
方針としては
- グループ一覧取得
- プラン一覧取得
- バケット一覧取得
- ようやく、バケットID/名前 一覧を作成
- 一覧を利用して、バケットIDから名前を取得
詳細
フロー全景
それぞれの説明をしていくと・・
バケットID と バケット名 の一覧 の変数初期化
バケットID と バケット名 の一覧 の変数一覧作成
- グループ一覧取得
- プラン一覧取得
- バケット一覧取得
- バケットID/名前 一覧を作成
プラン一覧取得の設定
バケット一覧の取得
こちらも動的コンテンツで、グループID と プランID を渡すだけ
一覧に、それぞれのバケットID/名前 を紐づけたオブジェクトを追加していく
これで、あとは、BucketID で拾うだけ
{
"BucketID": @{items('Apply_to_each_Bucket')?['id']},
"BucketName": @{items('Apply_to_each_Bucket')?['name']}
}
バケット名取得
バケットID でのフィルター方法
単純にバケットIDで一致 (equal) するものだけにフィルター
@equals(items('Apply_to_each_Task')?['bucketId'], item()['BucketID'])
バケット名を一点だけ取得
最初の一点を取得するだけ
こうしておかないと、参照した際に、リストの展開が勝手に走るので、その予防。
あとは使うだけですね。
@{first(body('Filter_array')).BucketName}
自分で作成した変数である為、動的コンテンツには出てきません。
動的コンテンツで使いたい場合は、JSON解析(Parse JSON) で解析させてやれば、使えます。
関連コネクター一覧
自分が所有および属しているグループを一覧表示する
グループのリストを一覧表示する
バケットの一覧表示
再現方法
以下のそれぞれの JSON をコピペ利用することで可能。コピペ方法は以下
バケットID と バケット名 の一覧 の変数初期化部分
変数初期化を Scope に含ませられないので、分割してます
{
"id": "70194cac-722a-410e-928b-e23626136756",
"brandColor": "#770BD6",
"connectionReferences": {
"shared_office365groups": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_office365groups/connections/shared-office365grou-c08f06b2-071d-44e3-bb02-62fc623e68ed"
}
},
"shared_planner": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_planner/connections/shared-planner-9e851f83-d92f-4f9a-a2e5-81121d888066"
}
}
},
"connectorDisplayName": "Variables",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogPHJlY3Qgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSIjNzcwQkQ2Ii8+DQogPGcgZmlsbD0iI2ZmZiI+DQogIDxwYXRoIGQ9Ik02Ljc2MywxMy42ODV2LTMuMjA4QzYuNzYzLDguNzQ4LDcuNzYyLDgsMTAsOHYxLjA3Yy0xLDAtMiwwLjMyNS0yLDEuNDA3djMuMTg4ICAgIEM4LDE0LjgzNiw2LjUxMiwxNiw1LjUxMiwxNkM2LjUxMiwxNiw4LDE3LjE2NCw4LDE4LjMzNVYyMS41YzAsMS4wODIsMSwxLjQyOSwyLDEuNDI5VjI0Yy0yLjIzOCwwLTMuMjM4LTAuNzcyLTMuMjM4LTIuNXYtMy4xNjUgICAgYzAtMS4xNDktMC44OTMtMS41MjktMS43NjMtMS41ODV2LTEuNUM1Ljg3LDE1LjE5NCw2Ljc2MywxNC44MzQsNi43NjMsMTMuNjg1eiIvPg0KICA8cGF0aCBkPSJtMjUuMjM4IDEzLjY4NXYtMy4yMDhjMC0xLjcyOS0xLTIuNDc3LTMuMjM4LTIuNDc3djEuMDdjMSAwIDIgMC4zMjUgMiAxLjQwN3YzLjE4OGMwIDEuMTcxIDEuNDg4IDIuMzM1IDIuNDg4IDIuMzM1LTEgMC0yLjQ4OCAxLjE2NC0yLjQ4OCAyLjMzNXYzLjE2NWMwIDEuMDgyLTEgMS40MjktMiAxLjQyOXYxLjA3MWMyLjIzOCAwIDMuMjM4LTAuNzcyIDMuMjM4LTIuNXYtMy4xNjVjMC0xLjE0OSAwLjg5My0xLjUyOSAxLjc2Mi0xLjU4NXYtMS41Yy0wLjg3LTAuMDU2LTEuNzYyLTAuNDE2LTEuNzYyLTEuNTY1eiIvPg0KICA8cGF0aCBkPSJtMTUuODE1IDE2LjUxMmwtMC4yNDItMC42NDFjLTAuMTc3LTAuNDUzLTAuMjczLTAuNjk4LTAuMjg5LTAuNzM0bC0wLjM3NS0wLjgzNmMtMC4yNjYtMC41OTktMC41MjEtMC44OTgtMC43NjYtMC44OTgtMC4zNyAwLTAuNjYyIDAuMzQ3LTAuODc1IDEuMDM5LTAuMTU2LTAuMDU3LTAuMjM0LTAuMTQxLTAuMjM0LTAuMjUgMC0wLjMyMyAwLjE4OC0wLjY5MiAwLjU2Mi0xLjEwOSAwLjM3NS0wLjQxNyAwLjcxLTAuNjI1IDEuMDA3LTAuNjI1IDAuNTgzIDAgMS4xODYgMC44MzkgMS44MTEgMi41MTZsMC4xNjEgMC40MTQgMC4xOC0wLjI4OWMxLjEwOC0xLjc2IDIuMDQ0LTIuNjQxIDIuODA0LTIuNjQxIDAuMTk4IDAgMC40MyAwLjA1OCAwLjY5NSAwLjE3MmwtMC45NDYgMC45OTJjLTAuMTI1LTAuMDM2LTAuMjE0LTAuMDU1LTAuMjY2LTAuMDU1LTAuNTczIDAtMS4yNTYgMC42NTktMi4wNDggMS45NzdsLTAuMjI3IDAuMzc5IDAuMTc5IDAuNDhjMC42ODQgMS44OTEgMS4yNDkgMi44MzYgMS42OTQgMi44MzYgMC40MDggMCAwLjcyLTAuMjkyIDAuOTM1LTAuODc1IDAuMTQ2IDAuMDk0IDAuMjE5IDAuMTkgMC4yMTkgMC4yODkgMCAwLjI2MS0wLjIwOCAwLjU3My0wLjYyNSAwLjkzOHMtMC43NzYgMC41NDctMS4wNzggMC41NDdjLTAuNjA0IDAtMS4yMjEtMC44NTItMS44NTEtMi41NTVsLTAuMjE5LTAuNTc4LTAuMjI3IDAuMzk4Yy0xLjA2MiAxLjgyMy0yLjA3OCAyLjczNC0zLjA0NyAyLjczNC0wLjM2NSAwLTAuNjc1LTAuMDkxLTAuOTMtMC4yNzFsMC45MDYtMC44ODVjMC4xNTYgMC4xNTYgMC4zMzggMC4yMzQgMC41NDcgMC4yMzQgMC41ODggMCAxLjI1LTAuNTk2IDEuOTg0LTEuNzg2bDAuNDA2LTAuNjU4IDAuMTU1LTAuMjU5eiIvPg0KICA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCguMDUzNiAtLjk5ODYgLjk5ODYgLjA1MzYgNS40OTI1IDMyLjI0NSkiIGN4PSIxOS43NTciIGN5PSIxMy4yMjUiIHJ4PSIuNzc4IiByeT0iLjc3OCIvPg0KICA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCguMDUzNiAtLjk5ODYgLjk5ODYgLjA1MzYgLTcuNTgzOSAzMC42MjkpIiBjeD0iMTIuMzY2IiBjeT0iMTkuMzE1IiByeD0iLjc3OCIgcnk9Ii43NzgiLz4NCiA8L2c+DQo8L3N2Zz4NCg==",
"isTrigger": false,
"operationName": "Initialize_variable_Buckets",
"operationDefinition": {
"type": "InitializeVariable",
"inputs": {
"variables": [
{
"name": "Buckets",
"type": "array",
"value": []
}
]
},
"runAfter": {},
"metadata": {
"operationMetadataId": "42d478aa-c3ea-451d-bccd-321304caff6b"
}
}
}
残りの全部
{
"id": "d03606a6-adbf-447d-bee2-42b4d0eee36b",
"brandColor": "#8C3900",
"connectionReferences": {
"shared_office365groups": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_office365groups/connections/shared-office365grou-c08f06b2-071d-44e3-bb02-62fc623e68ed"
}
},
"shared_planner": {
"connection": {
"id": "/providers/Microsoft.PowerApps/apis/shared_planner/connections/shared-planner-9e851f83-d92f-4f9a-a2e5-81121d888066"
}
}
},
"connectorDisplayName": "Control",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=",
"isTrigger": false,
"operationName": "Scope",
"operationDefinition": {
"type": "Scope",
"actions": {
"Scope_Create_Buckets_Name_List": {
"type": "Scope",
"actions": {
"List_groups_that_I_own_and_belong_to": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_office365groups",
"operationId": "ListOwnedGroups_V3",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_office365groups"
},
"parameters": {},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "f160977d-37f3-44fc-8d62-a2acec6df09f"
}
},
"Apply_to_each_Group": {
"type": "Foreach",
"foreach": "@outputs('List_groups_that_I_own_and_belong_to')?['body/value']",
"actions": {
"List_plans_for_a_group": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_planner",
"operationId": "ListGroupPlans",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_planner"
},
"parameters": {
"groupId": "@items('Apply_to_each_Group')?['id']"
},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "f6f5e952-fc2d-41bc-9721-576f3d1a8d7b"
}
},
"Apply_to_each_Plan": {
"type": "Foreach",
"foreach": "@outputs('List_plans_for_a_group')?['body/value']",
"actions": {
"List_buckets": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_planner",
"operationId": "ListBuckets_V3",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_planner"
},
"parameters": {
"groupId": "@items('Apply_to_each_Group')?['id']",
"id": "@items('Apply_to_each_Plan')?['id']"
},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "011459fc-89b5-4da1-91d8-4bb21a74fa91"
}
},
"Apply_to_each_Bucket": {
"type": "Foreach",
"foreach": "@outputs('List_buckets')?['body/value']",
"actions": {
"Append_to_array_variable": {
"type": "AppendToArrayVariable",
"inputs": {
"name": "Buckets",
"value": {
"BucketID": "@items('Apply_to_each_Bucket')?['id']",
"BucketName": "@items('Apply_to_each_Bucket')?['name']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "6a6f440a-761a-43f5-9032-6b675a1d3a26"
}
}
},
"runAfter": {
"List_buckets": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "0423a98d-4e3e-4418-a555-b21075cd6619"
}
}
},
"runAfter": {
"List_plans_for_a_group": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "a599c042-bd54-4175-a133-b10603c7bf10"
}
}
},
"runAfter": {
"List_groups_that_I_own_and_belong_to": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "bb4a0b17-76b7-4beb-bb2f-a1933ad5a258"
}
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "3bc94144-d2ea-47d4-ae84-7829eabef01f"
}
},
"Scope_Get_Bucket_Name": {
"type": "Scope",
"actions": {
"List_my_tasks": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_planner",
"operationId": "ListMyTasks_V2",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_planner"
},
"parameters": {},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "01bfed00-a150-4beb-8ba7-82f924956ac4"
}
},
"Apply_to_each_Task": {
"type": "Foreach",
"foreach": "@outputs('List_my_tasks')?['body/value']",
"actions": {
"Get_a_task": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_planner",
"operationId": "GetTask_V2",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_planner"
},
"parameters": {
"id": "@items('Apply_to_each_Task')?['id']"
},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
},
"runAfter": {},
"metadata": {
"operationMetadataId": "75b1ab60-8a5e-45b8-9b92-de444ce90888"
}
},
"Compose": {
"type": "Compose",
"inputs": "@first(body('Filter_array')).BucketName",
"runAfter": {
"Filter_array": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "58a0fca4-a11c-4111-85ca-6dac3e80b360"
}
},
"Filter_array": {
"type": "Query",
"inputs": {
"from": "@variables('Buckets')",
"where": "@equals(outputs('Get_a_task')?['body/bucketId'], item().BucketID)"
},
"runAfter": {
"Get_a_task": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "83c63ed1-bb0f-46b9-a146-9cbe433e3ab0"
}
}
},
"runAfter": {
"List_my_tasks": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "b3708b9f-e926-402e-b59e-dd955c2af2b7"
}
}
},
"runAfter": {
"Scope_Create_Buckets_Name_List": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "57ae0ab0-df53-4192-a672-e998e878eb61"
}
}
},
"runAfter": {
"Initialize_variable_Buckets": [
"Succeeded"
]
},
"metadata": {
"operationMetadataId": "5fb5226e-360f-4068-9d9a-9b90ff348419"
}
}
}
あとがき
Planner のコネクター要望にあげて、対応してもらうようなレベルだなぁとやってみて思いました。
そのうち更新されるんじゃないのかな?
keyword
how to get Bucket Name of Planner by Power Automate