rksoftware

Visual Studio とか C# とかが好きです

SharePoint REST API でリストをコピーするにつながるメモ

正確にはコピーではありません。

以前にリストの情報の取り方を書きました。
rksoftware.hatenablog.com

この情報を使って別のリストを作成する方法につながるメモです。

■ 結論

以前の記事の方法で取得した情報から一部の項目を削除して次のような JSON でリストを作ることができます。

{
    "Author": {
    },
    "CreatablesInfo": {
    },
    "DescriptionResource": {
    },
    "InformationRightsManagementSettings": {
    },
    "ParentWeb": {
    },
    "RootFolder": {
    },
    "TitleResource": {
    },
    "VersionPolicies": {
    },
    "AllowContentTypes": true,
    "BaseTemplate": 100,
    "BaseType": 0,
    "ContentTypesEnabled": false,
    "CrawlNonDefaultViews": false,
    "Created": "2023-05-03T08:00:00Z",
    "CurrentChangeToken": {
      "StringValue": "1;3;XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;XXXXXXXXXXXXXXXXXX;XXXXXXXXXX"
    },
    "DefaultContentApprovalWorkflowId": "00000000-0000-0000-0000-000000000000",
    "DefaultItemOpenUseListSetting": false,
    "Description": " ",
    "Direction": "none",
    "DisableCommenting": false,
    "DisableGridEditing": false,
    "DocumentTemplateUrl": null,
    "DraftVersionVisibility": 0,
    "EnableAttachments": true,
    "EnableFolderCreation": false,
    "EnableMinorVersions": false,
    "EnableModeration": false,
    "EnableRequestSignOff": true,
    "EnableVersioning": true,
    "EntityTypeName": "Saitamalist0001List",
    "ExemptFromBlockDownloadOfNonViewableFiles": false,
    "FileSavePostProcessingEnabled": false,
    "ForceCheckout": false,
    "HasExternalDataSource": false,
    "Hidden": false,
    "Id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "ImagePath": {
      "DecodedUrl": "/_layouts/15/images/itgen.png?rev=47"
    },
    "ImageUrl": "/_layouts/15/images/itgen.png?rev=47",
    "DefaultSensitivityLabelForLibrary": "",
    "IrmEnabled": false,
    "IrmExpire": false,
    "IrmReject": false,
    "IsApplicationList": false,
    "IsCatalog": false,
    "IsPrivate": false,
    "ItemCount": 0,
    "LastItemDeletedDate": "2023-05-03T08:00:00Z",
    "LastItemModifiedDate": "2023-05-03T08:00:00Z",
    "LastItemUserModifiedDate": "2023-05-03T08:00:00Z",
    "ListExperienceOptions": 0,
    "ListItemEntityTypeFullName": "SP.Data.Saitamalist0001ListItem",
    "MajorVersionLimit": 50,
    "MultipleDataList": false,
    "NoCrawl": false,
    "ParentWebPath": {
      "DecodedUrl": "/"
    },
    "ParentWebUrl": "/",
    "ParserDisabled": false,
    "ServerTemplateCanCreateFolders": true,
    "TemplateFeatureId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "Title": "saitamalist0001"
  }

■ 注意点

この方法で作られるのはリスト自体で、その中の列などは作られません。(デフォルト状態)
アイテムも含まれません。

■ この JSON をどうやって作ったか

リスト作成 API に投げてエラーになる項目 + α を取り除きました。

■ + α とは?

"MajorWithMinorVersionsLimit" という項目 です。これがあると、Power Automate で実行した際に結果がいつまでも帰ってきませんでした。

■ 例えばどんなエラー?

プロパティ 'd' は型 'SP.List' に存在しません。型で定義されているプロパティ名のみ使用してください。
プロパティ '__metadata' は型 'SP.List' に存在しません。型で定義されているプロパティ名のみ使用してください。
エンティティ セット参照ナビゲーション リンクのコンテンツを読み取ろうとしているときに、型 'StartObject' のノードを JSON リーダーから読み取りましたが、'StartArray' ノードを読み取ることを想定していました。
プロパティ '__deferred' は型 'SP.User' に存在しません。型で定義されているプロパティ名のみ使用してください。
エンティティ セット参照ナビゲーション リンクのコンテンツを読み取ろうとしているときに、型 'StartObject' のノードを JSON リーダーから読み取りましたが、'StartArray' ノードを読み取ることを想定していました。
プロパティ '__deferred' は型 'SP.CreatablesInfo' に存在しません。型で定義されているプロパティ名のみ使用してください。
プロパティ '__deferred' は型 'SP.View' に存在しません。型で定義されているプロパティ名のみ使用してください。
プロパティ '__metadata' は型 'SP.ChangeToken' に存在しません。型で定義されているプロパティ名のみ使用してください。
プロパティ '__metadata' は型 'SP.ResourcePath' に存在しません。型で定義されているプロパティ名のみ使用してください。

■ さっきの JSON をどう使うの?

rksoftware.hatenablog.com これです。この記事の JSON のところに突っ込んでください。

■ その他、わかっている事

Title に日本語を設定すると、Power Automate が結果が返ってこずずっと待機してしまいます。
これは課題。

■ 次は列

次はこの作った列に、コピー元の列を追加する方法を調べたいと思います。
その次はアイテム。さらに次はライブラリも。夢広がりますな

■ 簡単ですね

簡単ですね。