1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power AutomateでSharePointのニュース投稿の自動化を試みたけど『d=』とは一体何なのか?

Posted at

SharePointコネクタ

トリガーは13、アクションは47と数多くの効率化が実施できる素晴らしいもの
※非推奨含む

本記事は2023.11.25時点の情報です

  • ファイル
  • ドキュメントライブラリ(フォルダー)
  • ドキュメントセット
  • リスト
  • アイテムの権限設定
  • チェックイン
  • チェックアウト

あらゆる操作が自動化できる魅力的な機能です。

一方で 「サイトページ自動投稿」は、
SharePoint に HTTP 要求を送信するではないと実施できません。

Microsoft MVP

両名が非常に参考になるブログを挙げてくださっているので、
何とかページやニュースの自動投稿は出来そうです。

  1. テンプレートを用意する(手動)
  2. HTTP 要求で以下を実施
    1. テンプレートのコピー
    2. チェックアウト
    3. コピー後のファイルの編集
    4. 投稿

という流れです。

ハイパーリンクの参照は、どのようにすればよいか

『SharePoint上にファイルをアップロードしました!』

という通知としてのニュース投稿の場合、最新のファイルのリンクも差し込む必要があります。
これはどうしたら実現できるか、今回の課題になります。

「SharePoint に HTTP 要求を送信する」を解析してみる

まずは、紹介した両名のブログを読んでください。

読んでいる前提で記事を書き続けると、
「SharePoint に HTTP 要求を送信する」アクションで、
オブジェクト形式でSharePointのHTMLを直接POSTしています。。

  • サンプルで作ったページ

HTTP要求のbody

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&amp;csf=1&amp;web=1&amp;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"
}
hrefに注目
<a href=\\\"/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx?d=w67e4bc7258c5449881c1a6aa63fd5d93&amp;csf=1&amp;web=1&amp;e=ObNGPT\\\">

<href=>の部分がリンクなのでしょう。

/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx

上がファイルのパスなので、ここ変えれば参照できるのでは?という仮説で実施してみます。

検証のシナリオ

■ フロー全体図
image.png

■ フォルダ構成
image.png

  1. ファイルが作成されたとき
    • ドキュメント/Power Automateにファイルがアップロードされたとき
  2. 本日の日付を変数に格納
    • yyyymmdd形式で取得
  3. ファイル コンテンツを取得の取得
    • アップロードされたファイルコンテンツを取得し
  4. ファイルの作成
    • ドキュメント/QiitaQiitayyyymmdd.xlsxという名前で保存
  5. SharePointのページテンプレートをコピー
    • ファイル名はyyyymmdd.aspx
  6. コピーしたページファイルのメタデータの取得
    • Idを取得して後続の編集を用意にします
  7. ページをチェックアウト
  8. ページの編集
  9. ページの公開
  10. ニュースへ昇格

テンプレートのサイトページのリンクは下記のファイルへのリンクが設定されています。
image.png

Param Value
Path ドキュメント/03その他ドキュメント/qiita/dってなんやねん
File Name sharepoint_news_templete.xlsx

もともとのファイルはわかりやすく、
テンプレートです!!
image.png

というExcelファイルで試してみます。

編集後に確実に変わるファイルパスの部分だけ置き換えて検証してみましょう

hrefに注目
<a href=\\\"/:x:/r/sites/mysite/[ ■■■ここだけ変えてみる■■■ ]?d=w67e4bc7258c5449881c1a6aa63fd5d93&amp;csf=1&amp;web=1&amp;e=ObNGPT\\\">

アップロードされるファイルはこちら!

image.png

上記が表示されれば成功!

検証

タイトルなし 10.gif

参照できない!!!

ファイルパスを変更しただけでは、アップロードされたファイルが表示されません。

改めてHTMLに注目

<a href=\\\"/:x:/r/sites/mysite/Shared%20Documents/qiita/dってなんやねん/sharepoint_news_templete.xlsx?d=w67e4bc7258c5449881c1a6aa63fd5d93&amp;csf=1&amp;web=1&amp;e=ObNGPT\\\">20231111_News.xlsx</a>

hrefの中でも

Param 内容の予測
/:x:/r: SharePoint内のファイルパスであることが推察できます
?d= クエリパラメーターと思われます。ココが怪しいですね。documentのdっぽい。
&amp; よくわかりませんが、度々繰り返されるので、区切りを表すのでしょう。
csf=1 クエリパラメーターと思われますが・・・(不明)
web=1 クエリパラメーターと思われますが・・・(不明)
e=ObNGPT クエリパラメーターと思われますが・・・(不明)

調査をしてみても奥が深そうな予感です。

ファイルのプロパティの取得

さて、ファイルの詳細を取得するために、別のアクションを追加してみましょう。

ファイルのプロパティの取得で取得できそうな値がないか、調査してみます。

image.png

どうやら{Link}d=も含めた値で取得できそうですね!

image.png

ファイルの作成後にプロパティを取得し、変数dのパラメーター値を格納してみましょう。

image.png

d=で分割した後の値を取得します
split(body('ファイルのプロパティの取得')?['{Link}'],'d=')[1]

e=の箇所は全くわからないので、この際思い切って削ってみますw
&amp;e=ObNGPTこの部分ですね。

課題のhrefの値は

href
<a href=\\\"/:x:/r/sites/--secret--/Shared%20Documents/Qiita/Qiita@{variables('yyyy㎜dd')}?d=@{variables('d')}&amp;csf=1&amp;web=1\\\">

としてみます。

■ 最終的な形

image.png

果たして結果は!

タイトルなし 10-1.gif

う、うまくいってしまった・・・。
成功です。

パラメーターの詳細がGPTを駆使してもわかりませんでしたが、何とか目的は達成できました!
SharePointの奥は深い・・・。

ですが自動化しがいがある領域で最近ハマってます!

皆様も良いPower Lifeを!
Good night!

お知らせ
dパラメーターはIDを示すことが推察されますので、
テンプレート元や本記事で利用したファイルは全て削除しております。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?