RESTAPIを介してサイトページを作成する
自分のタイトルとコンテンツを使用して、RESTAPIを介してサイトページを作成したいと思います。これまでのところ、POSTリクエストを送信しようとしましたが、エラーが発生しました。
ドキュメントライブラリにアイテムを追加するには、SPFileCollection.Add()を使用します
役職: <url>/_api/web/lists/GetByTitle('Site Pages')/Items
体:
{
"__metadata": {
"type": "SP.Data.SitePagesItem"
},
"Title": "It's working?"
}
私が理解していることから、最初にSharePointでサイトページ(ファイル)を作成し、次にRESTを介して変更する必要があります。ただし、私の要件は、RESTのみを介してエントリ全体を作成することです。
これはどのように行うことができますか?
回答
これは、これを行う方法を説明する素晴らしい記事です。基本的.aspx
に、サイトページライブラリに新しいファイルを作成します。彼らが使用するコードは次のとおりです(ターゲットWebのページから呼び出されます)。
function CreateWikiPage() {
// Get Server relative url of Web(site)
var WebServerRelativeUrl = _spPageContextInfo.webServerRelativeUrl;
// Provide Internal name of the library here
var DocuentLibraryInternalName = "SitePages";
// Provide name of the wiki page to be created
var NewPageName = "NewRESTWikipage.aspx";
// Form relative url of the new page. This will be used in function below
var NewFileUrl = WebServerRelativeUrl + "/" + DocuentLibraryInternalName + "/" + NewPageName;
$.ajax({ // "templateFileType" values in below method // StandardPage. The value = 0. // WikiPage. The value = 1. // FormPage. The value = 2. url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFolderByServerRelativeUrl('" + WebServerRelativeUrl + "/" + DocuentLibraryInternalName + "')/Files/AddTemplateFile(urlOfFile='" + NewFileUrl + "',templateFileType=1)", method: "POST", headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data, status, xhr) {
console.log("Success");
},
error: function (xhr, status, error) {
console.log("Failed");
}
});
}
SharePointで「最新のエントリ」のテンプレートを作成します。これを行うには、このガイドに従ってください。
保存したテンプレートを使用して、RESTAPIを介して新しいサイトページを作成します。テンプレートフォルダからそのサブページのルートフォルダにコピーするだけです。
/_api/Web/GetFileByServerRelativeUrl('<source_url>')/CopyTo(strnewurl='<target_url>',bOverwrite=false)
新しく作成したサイトページを必要に応じて編集します(REST APIなどを使用)。
ソースURLとターゲットURL:
source_url
- /sites/<your_site>/SitePages/Templates/Your-Template.aspx
target_url
- /sites/<your_site>/SitePages/New-Modern-Page.aspx