SharePointコネクタ
トリガーは13、アクションは47と数多くの効率化が実施できる素晴らしいもの
※非推奨含む
本記事は2023.11.25時点の情報です
- ファイル
- ドキュメントライブラリ(フォルダー)
- ドキュメントセット
- リスト
- アイテムの権限設定
- チェックイン
- チェックアウト
あらゆる操作が自動化できる魅力的な機能です。
一方で 「サイトページ自動投稿」は、
SharePoint に HTTP 要求を送信する
ではないと実施できません。
Microsoft MVP
- Ota Hirofumi さん
- Miyake さん
両名が非常に参考になるブログを挙げてくださっているので、
何とかページやニュースの自動投稿は出来そうです。
- テンプレートを用意する(手動)
- HTTP 要求で以下を実施
- テンプレートのコピー
- チェックアウト
- コピー後のファイルの編集
- 投稿
という流れです。
ハイパーリンクの参照は、どのようにすればよいか
『SharePoint上にファイルをアップロードしました!』
という通知としてのニュース投稿
の場合、最新のファイルのリンクも差し込む必要があります。
これはどうしたら実現できるか、今回の課題になります。
「SharePoint に HTTP 要求を送信する」
を解析してみる
まずは、紹介した両名のブログを読んでください。
読んでいる前提で記事を書き続けると、
「SharePoint に HTTP 要求を送信する」アクション
で、
オブジェクト形式でSharePointのHTMLを直接POSTしています。。
- サンプルで作ったページ
HTTP要求のbody
{
"__metadata": {
"type": "SP.Publishing.SitePage"
},
"LayoutWebpartsContent": "[{\"id\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"instanceId\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"title\":\"タイトル領域\",\"description\":\"タイトル領域の説明\",\"audiences\":[],\"serverProcessedContent\":{\"htmlStrings\":{},\"searchablePlainTexts\":{},\"imageSources\":{\"imageSource\":\"/_layouts/15/images/visualtemplatetitleimage.jpg\"},\"links\":{},\"customMetadata\":{\"imageSource\":{}}},\"dataVersion\":\"1.4\",\"properties\":{\"imageSourceType\":2,\"title\":\"News!! 2023.11.11\",\"textAlignment\":\"Left\",\"showPublishDate\":false,\"authors\":[{\"id\":\"i:0#.f|membership|mailaddress.onmicrosoft.com\",\"upn\":\"mailaddress.onmicrosoft.com\",\"email\":\"mailaddress.onmicrosoft.com\",\"name\":\"出戻り ガツオ\",\"role\":\"\"}],\"showTopicHeader\":false,\"authorByline\":[\"i:0#.f|membership|mailaddress.onmicrosoft.com\"],\"layoutType\":\"ColorBlock\",\"topicHeader\":\"タイトルの上のテキスト\",\"titlePlaceholder\":\"ニュース投稿に名前を付ける\",\"enableGradientEffect\":true,\"isDecorative\":true,\"hasTitleBeenCommitted\":true},\"containsDynamicDataSource\":false,\"reservedHeight\":450}]",
"CanvasContent1": "[{\"controlType\":4,\"displayMode\":2,\"id\":\"6f9230af-2a98-4952-b205-9ede4f9ef548\",\"position\":{\"zoneIndex\":1,\"sectionIndex\":1,\"controlIndex\":1,\"sectionFactor\":8,\"layoutIndex\":1},\"emphasis\":{\"zoneEmphasis\":0,\"sectionEmphasis\":0,\"controlEmphasis\":0},\"editorType\":\"CKEditor\",\"addedFromPersistedData\":true,\"innerHTML\":\"<p>今日のニュースよ~</p><p>2023年11月11日をお知らせします。</p><p>今日のファイルを見てくれや。</p><p><a href=\\\"/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx?d=w67e4bc7258c5449881c1a6aa63fd5d93&csf=1&web=1&e=ObNGPT\\\">20231111_News.xlsx</a></p>\"},{\"controlType\":3,\"displayMode\":2,\"id\":\"73d07dde-3474-4545-badb-f28ba239e0e1\",\"position\":{\"zoneIndex\":1,\"sectionIndex\":2,\"controlIndex\":1,\"sectionFactor\":4,\"layoutIndex\":1},\"webPartId\":\"d1d91016-032f-456d-98a4-721247c305e8\",\"emphasis\":{},\"reservedHeight\":268,\"reservedWidth\":364,\"addedFromPersistedData\":true,\"webPartData\":{\"id\":\"d1d91016-032f-456d-98a4-721247c305e8\",\"instanceId\":\"73d07dde-3474-4545-badb-f28ba239e0e1\",\"title\":\"\\n 画像\\n \",\"description\":\"\\n ページに画像を表示します\\n \",\"audiences\":[],\"serverProcessedContent\":{\"htmlStrings\":{},\"searchablePlainTexts\":{\"captionText\":\"ド級のテンプレート\"},\"imageSources\":{\"imageSource\":\"/_LAYOUTS/IMAGES/VISUALTEMPLATEIMAGE1.JPG\"},\"links\":{},\"customMetadata\":{\"imageSource\":{\"siteId\":\"\",\"webId\":\"\",\"listId\":\"\",\"uniqueId\":\"\",\"width\":4288,\"height\":2848}}},\"dataVersion\":\"1.11\",\"properties\":{\"imageSourceType\":2,\"altText\":\"\",\"overlayText\":\"\",\"siteId\":\"\",\"webId\":\"\",\"listId\":\"\",\"uniqueId\":\"\",\"imgWidth\":4288,\"imgHeight\":2848,\"fixAspectRatio\":false,\"alignment\":\"Center\",\"overlayTextStyles\":{\"textColor\":\"light\",\"isBold\":false,\"isItalic\":false,\"textBoxColor\":\"dark\",\"textBoxOpacity\":0.54,\"overlayColor\":\"light\",\"overlayTransparency\":0},\"isOverlayTextVisible\":true},\"containsDynamicDataSource\":false}},{\"controlType\":0,\"pageSettingsSlice\":{\"isDefaultDescription\":true,\"isDefaultThumbnail\":true,\"isSpellCheckEnabled\":true,\"globalRichTextStylingVersion\":0,\"rtePageSettings\":{\"contentVersion\":5},\"isEmailReady\":false}}]",
"AuthorByline": [
"i:0#.f|membership|mailaddress.onmicrosoft.com"
],
"TopicHeader": "タイトルの上のテキスト",
"BannerImageUrl": "/_layouts/15/images/visualtemplatetitleimage.jpg",
"Title": "News!! 2023.11.11"
}
<a href=\\\"/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx?d=w67e4bc7258c5449881c1a6aa63fd5d93&csf=1&web=1&e=ObNGPT\\\">
<href=>
の部分がリンクなのでしょう。
/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx
上がファイルのパスなので、ここ変えれば参照できるのでは?という仮説で実施してみます。
検証のシナリオ
- ファイルが作成されたとき
-
ドキュメント/Power Automate
にファイルがアップロードされたとき
-
- 本日の日付を変数に格納
- yyyymmdd形式で取得
- ファイル コンテンツを取得の取得
- アップロードされたファイルコンテンツを取得し
- ファイルの作成
-
ドキュメント/Qiita
にQiitayyyymmdd.xlsx
という名前で保存
-
- SharePointのページテンプレートをコピー
- ファイル名は
yyyymmdd.aspx
- ファイル名は
- コピーしたページファイルのメタデータの取得
- Idを取得して後続の編集を用意にします
- ページをチェックアウト
- ページの編集
- ページの公開
- ニュースへ昇格
テンプレートのサイトページのリンクは下記のファイルへのリンクが設定されています。
Param | Value |
---|---|
Path | ドキュメント/03その他ドキュメント/qiita/dってなんやねん |
File Name | sharepoint_news_templete.xlsx |
というExcelファイルで試してみます。
編集後に確実に変わるファイルパスの部分だけ置き換えて検証してみましょう
<a href=\\\"/:x:/r/sites/mysite/[ ■■■ここだけ変えてみる■■■ ]?d=w67e4bc7258c5449881c1a6aa63fd5d93&csf=1&web=1&e=ObNGPT\\\">
アップロードされるファイルはこちら!
上記が表示されれば成功!
検証
参照できない!!!
ファイルパスを変更しただけでは、アップロードされたファイルが表示されません。
改めてHTMLに注目
<a href=\\\"/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx?d=w67e4bc7258c5449881c1a6aa63fd5d93&csf=1&web=1&e=ObNGPT\\\">20231111_News.xlsx</a>
hrefの中でも
Param | 内容の予測 |
---|---|
/:x:/r: |
SharePoint内のファイルパスであることが推察できます |
?d= |
クエリパラメーターと思われます。ココが怪しいですね。documentのdっぽい。 |
& |
よくわかりませんが、度々繰り返されるので、区切りを表すのでしょう。 |
csf=1 |
クエリパラメーターと思われますが・・・(不明) |
web=1 |
クエリパラメーターと思われますが・・・(不明) |
e=ObNGPT |
クエリパラメーターと思われますが・・・(不明) |
調査をしてみても奥が深そうな予感です。
ファイルのプロパティの取得
さて、ファイルの詳細を取得するために、別のアクションを追加してみましょう。
ファイルのプロパティの取得
で取得できそうな値がないか、調査してみます。
どうやら{Link}
でd=
も含めた値で取得できそうですね!
ファイルの作成後にプロパティ
を取得し、変数
にd
のパラメーター値を格納してみましょう。
split(body('ファイルのプロパティの取得')?['{Link}'],'d=')[1]
e=
の箇所は全くわからないので、この際思い切って削ってみますw
&e=ObNGPT
この部分ですね。
課題のhref
の値は
<a href=\\\"/:x:/r/sites/--secret--/Shared%20Documents/Qiita/Qiita@{variables('yyyy㎜dd')}?d=@{variables('d')}&csf=1&web=1\\\">
としてみます。
■ 最終的な形
果たして結果は!
う、うまくいってしまった・・・。
成功です。
パラメーターの詳細がGPTを駆使してもわかりませんでしたが、何とか目的は達成できました!
SharePointの奥は深い・・・。
ですが自動化しがいがある領域で最近ハマってます!
皆様も良いPower Lifeを!
Good night!
お知らせ
d
パラメーターはIDを示すことが推察されますので、
テンプレート元や本記事で利用したファイルは全て削除しております。