背景
Sharepoint においた Excel を Power BI で処理しようとした。
パスを設定みたいにして扱えるようにしたかった。
が・・パスの取得方法は以下三種類ある
で、いずれからでも、以下を取得出来ないか?・・と試した記録
- Site URL
- Folder URL
結論
リンクのコピーは、Folder URL を取得出来なかった(Rest API たたけば取れそうだけど)
Site/Folder URL 取得例
let
ソース = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZHPTsJAEMbfpUlvhKWLrZSEkBogihA0VpAgh6UsdJOW1s4C9mh78mjiE3g0Rg+cTHybfRG3VeO/gyHx9OXbmf3ml5nRSHE5D6GKELjMJ0VwSUTDgC140Ql8VJ1VESCbAm8FkU2JD6gJen8wMIeAeXfu9jtn7QvO2t29OPbIatYLhvbRvta2eoflVXxs1WnNqsQaJUpBEem9SDcieRJXjyLZiPRWpC/KuPAHAzBOfzCcZB1TFZcagbP06YIDkjVZsDzvgFMfigTCy/qCrm0SzSnvMOCnkVdTcStPk/o1T9rfiefLUgkbK0bXIeHuVl/lY44j9QNIxc0M6S2UTbeO84J11vcJJTN2HWxUJrqj4oZj6hUpOxrOnKnNcjcpG7qpm7hs5OtP7kR6LdIHkTz///rfAfMz32QTvt14/Ao=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Site URL" = _t, コピー種類 = _t]),
変更された型 = Table.TransformColumnTypes(ソース,{{"Site URL", type text}, {"コピー種類", type text}}),
DecodedURL = Table.AddColumn(変更された型, "DecodedURL", each Uri.Parts("https://contso.com?url_1stParam=" & [Site URL])[Query][url_1stParam], Text.Type),
uri = Table.AddColumn(DecodedURL, "uri", each (Uri.Parts([Site URL])), Text.Type),
Query = Table.AddColumn(uri, "Query", each [uri][Query]),
id = Table.AddColumn(Query, "id", each ([uri][Query][id]?), Text.Type),
viewid = Table.AddColumn(id, "viewid", each ([uri][Query][viewid]?), Text.Type),
SiteURL = Table.AddColumn(viewid, "SiteURL", each ([uri][Scheme] & "://" & [uri][Host] & "/sites/" &
Text.BetweenDelimiters([DecodedURL], (if Text.Contains([DecodedURL], "/sites/") then "/sites/" else "/:f:/s/"), "/")
& "/"), Text.Type),
FolderURL = Table.AddColumn(SiteURL, "FolderURL", each ([uri][Scheme] & "://" & [uri][Host] & (if [id] is null then "/sites/" & (if Text.Contains([DecodedURL], "?") then Text.BetweenDelimiters([DecodedURL], "/sites/", "?") else Text.AfterDelimiter([DecodedURL], "/sites/")) else [id]) & "/"), Text.Type)
in
FolderURL
説明
- Decode をまずはする
- Uri.Parts() で取れるなら取る
- ダメな場合は、頑張ってテキスト抽出・・
必要な関数は以下辺り
あとがき
まぁ、Site URL だけは取れたから良しとする
正規表現使えばもっと簡単に出来た・・?
正直・・こんなことするだけ無駄なんじゃないのか、という思いの方が強い・・