SharePoint の JavaScript ライブラリ コードを使用して基本的な操作を完了するComplete basic operations using JavaScript library code in SharePoint

SharePoint クライアント オブジェクト モデルを使用して、SharePoint でデータを取得、更新、および管理できます。You can use the SharePoint client object model to retrieve, update, and manage data in SharePoint. SharePoint では、次のようなさまざまな形でオブジェクト モデルを使用できます。SharePoint makes the object model available in several forms:

  • .NET Framework 再頒布可能アセンブリ.NET Framework redistributable assemblies
  • JavaScript ライブラリJavaScript library
  • REST/OData エンドポイントREST/OData endpoints
  • Windows Phone アセンブリWindows Phone assemblies
  • Silverlight 再頒布可能アセンブリSilverlight redistributable assemblies

SharePoint で使用可能な API セットの詳細については、「SharePoint での適切な API セットの選択」を参照してください。For more information about the sets of APIs that are available for SharePoint, see Choose the right API set in SharePoint.

注意

JavaScript ライブラリを使用する "Hello World" レベルのサンプル SharePoint アドインについては、「SharePoint JavaScript API を使用して SharePoint のデータを操作する」を参照してください。For a "Hello World" level sample SharePoint Add-in that uses the JavaScript library, see Use the SharePoint JavaScript APIs to work with SharePoint data.

この記事では、JavaScript オブジェクト モデルを使用して基本的な操作を実行する方法について説明します。This article shows how to perform basic operations using the JavaScript object model. HTML の <script> タグを使用してオブジェクト モデルへの参照を追加できます。You can add a reference to the object model by using HTML <script> tags. その他のクライアント API の使用方法については、以下を参照してください。For information about how to use the other client APIs, see the following:

SharePoint での JavaScript クライアント オブジェクト モデルを使用した基本的なタスクの実行Perform basic tasks in SharePoint using the JavaScript client object model

以降のセクションでは、プログラムによって実行できるタスクについて説明します。また、実際の操作を示す JavaScript のコード例も含まれています。The following sections describe tasks that you can complete programmatically, and they include JavaScript code examples that demonstrate the operations.

クラウドでホストされるアドインを作成する場合、HTML の <script> タグを使用してオブジェクト モデルへの参照を追加できます。When you create a cloud-hosted add-in, you can add a reference to the object model by using HTML <script> tags. クラウドでホストされるアドインでは、すべてのシナリオでアドイン Web が存在するわけではないため、ホスト Web を参照することをお勧めします。{StandardTokens} トークンを使用している場合、SPHostUrl クエリ文字列パラメーターからホスト Web の URL を取得できます。We recommend that you reference the host web because the add-in web may not exist in every scenario in cloud-hosted add-ins. You can retrieve the host web URL from the SPHostUrl query string parameter if you are using the {StandardTokens} token. {HostUrl} トークンを使用している場合は、カスタム定義されたクエリ文字列パラメーターを使用することもできます。You can also use your custom defined query string parameter if you are using the {HostUrl} token. ホスト Web の URL を取得した後、JavaScript コードを使用して、オブジェクト モデルへの参照を動的に作成する必要があります。After you have the host web URL, you must use JavaScript code to dynamically create the reference to the object model.

下記のコード例では、以下のタスクが実行され、JavaScript オブジェクト モデルへの参照が追加されます。The following code example performs these tasks to add a reference to the JavaScript object model:

  • Microsoft コンテンツ配信ネットワーク (CDN: Content Delivery Network) から AJAX ライブラリを参照します。References the AJAX library from the Microsoft Content Delivery Network (CDN).
  • Microsoft CDN から jQuery ライブラリを参照します。References the jQuery library from the Microsoft CDN.
  • クエリ文字列からホスト Web の URL を抽出します。Extracts the host web URL from the query string.
  • jQuery で getScript 関数を使用して SP.Runtime.js ファイルと SP.js ファイルを読み込みます。ファイルの読み込みが完了すると、プログラムから SharePoint の JavaScript オブジェクト モデルにアクセスできるようになります。Loads the SP.Runtime.js and SP.js files by using the getScript function in jQuery. After loading the files, your program has access to the JavaScript object model for SharePoint.
  • execOperation 関数でフローを続行します。Continues the flow in the execOperation function.
<script 
    src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" 
    type="text/javascript">
</script>
<script
    type="text/javascript"
    src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js">
</script>
<script type="text/javascript">
    var hostweburl;

    // Load the required SharePoint libraries.
    $(document).ready(function () {

        // Get the URI decoded URLs.
        hostweburl =
            decodeURIComponent(
                getQueryStringParameter("SPHostUrl")
        );

        // The js files are in a URL in the form:
        // web_url/_layouts/15/resource_file
        var scriptbase = hostweburl + "/_layouts/15/";

        // Load the js files and continue to
        // the execOperation function.
        $.getScript(scriptbase + "SP.Runtime.js",
            function () {
                $.getScript(scriptbase + "SP.js", execOperation);
            }
        );
    });

    // Function to execute basic operations.
    function execOperation() {

        // Continue your program flow here.

    }

    // Function to retrieve a query string value.
    // For production purposes you may want to use
    // a library to handle the query string.
    function getQueryStringParameter(paramToRetrieve) {
        var params =
            document.URL.split("?")[1].split("&amp;");
        var strParams = "";
        for (var i = 0; i < params.length; i = i + 1) {
            var singleParam = params[i].split("=");
            if (singleParam[0] == paramToRetrieve)
                return singleParam[1];
        }
    }
</script>


SharePoint ホスト型アドインを作成する場合、HTML <script> タグを使用してオブジェクト モデルへの参照を追加できます。SharePoint によってホストされるアドインのアドイン Web を使用すると、JavaScript オブジェクト モデルを使用するために必要なファイルを相対パスで参照できるようになります。When you create a SharePoint-hosted add-in, you can add a reference to the object model by using HTML <script> tags. The add-in web in a SharePoint-hosted add-in allows you to use relative paths to reference the required files to use the JavaScript object model.

下記のマークアップでは、次のタスクが実行され、JavaScript オブジェクト モデルへの参照が追加されます。The following markup performs these tasks to add a reference to the JavaScript object model:

  • Microsoft CDN から AJAX ライブラリを参照します。References the AJAX library from the Microsoft CDN.
  • アドイン Web に対する相対 URL を使用して SP.Runtime.js ファイルを参照します。References the SP.Runtime.js file by using a URL relative to the add-in web.
  • アドイン Web に対する相対 URL を使用して SP.js ファイルを参照します。References the SP.js file by using a URL relative to the add-in web.
<script 
    src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" 
    type="text/javascript">
</script>
<script 
    type="text/javascript" 
    src="/_layouts/15/sp.runtime.js">
</script>
<script 
    type="text/javascript" 
    src="/_layouts/15/sp.js">
</script>
<script type="text/javascript">

    // Continue your program flow here.

</script>

SharePoint Web サイトのタスクSharePoint website tasks

JavaScript を使用して Web サイトを操作するには、最初に ClientContext(serverRelativeUrl) コンストラクターを使用し、URL または URI を渡して特定の要求コンテキストを返します。To work with websites using JavaScript, start by using the ClientContext(serverRelativeUrl) constructor and pass a URL or URI to return a specific request context.

Web サイトのプロパティを取得するRetrieve the properties of a website

ClientContext クラスの Web プロパティを使用して、指定されたコンテキスト URL に存在する Web サイト オブジェクトのプロパティを指定します。Use the web property of the ClientContext class to specify the properties of the website object that is located at the specified context URL. load(clientObject) メソッドを使用して Web サイト オブジェクトを読み込み、executeQueryAsync(succeededCallback, failedCallback) を呼び出すと、その Web サイトのすべてのプロパティにアクセスできるようになります。After you load the website object through the load(clientObject) method and then call executeQueryAsync(succeededCallback, failedCallback), you acquire access to all the properties of that website.

次の例では、指定した Web サイトのタイトルと説明が表示されますが、既定で返される他のすべてのプロパティが使用可能になるのは、Web サイト オブジェクトを読み込んでクエリを実行した後です。The following example displays the title and description of the specified website, although all other properties that are returned by default become available after you load the website object and execute the query.


function retrieveWebSite(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    clientContext.load(this.oWebsite);

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + 
        ' Description: ' + this.oWebsite.get_description());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

Web サイトの選択したプロパティのみを取得するRetrieve only selected properties of a website

クライアントとサーバーの間で不要なデータが転送されることを抑えるため、Web サイト オブジェクトのすべてのプロパティではなく、指定したプロパティのみを返すこともできます。この場合、LINQ クエリ、または load(clientObject) メソッドとラムダ式構文を使用して、サーバーから返すプロパティを指定します。次の例では、 executeQueryAsync(succeededCallback, failedCallback) を呼び出した後で、Web サイト オブジェクトのタイトルと作成日付のみが使用可能になります。To reduce unnecessary data transference between client and server, you might want to return only specified properties of the website object, not all of its properties. In this case, use LINQ query or lambda expression syntax with the load(clientObject) method to specify which properties to return from the server. In the following example, only the title and creation date of the website object become available after executeQueryAsync(succeededCallback, failedCallback) is called.

function retrieveWebSiteProperties(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    clientContext.load(this.oWebsite, 'Title', 'Created');

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + 
        ' Created: ' + this.oWebsite.get_created());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

注意

他のプロパティにアクセスしようとした場合、他のプロパティは使用できないため、このコードは例外をスローします。If you try to access other properties, the code throws an exception because other properties are not available.


Web サイトのプロパティに書き込むWrite to a website's properties

Web サイトを変更するには、サイトのプロパティを設定し、 update() メソッドを呼び出します。この方法はサーバー オブジェクト モデルの機能の仕方に似ていますが、クライアント オブジェクト モデルでは、 executeQueryAsync(succeededCallback, failedCallback) を呼び出して、指定したすべてのコマンドのバッチ処理を要求する必要があります。次の例は、指定した Web サイトのタイトルと説明を変更します。To modify a website, you set its properties and call the update() method, similarly to how the server object model functions. However, in the client object model, you must call executeQueryAsync(succeededCallback, failedCallback) to request batch processing of all commands that you specify. The following example changes the title and description of a specified website.

function updateWebSite(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    this.oWebsite = clientContext.get_web();

    this.oWebsite.set_title('Updated Web Site');
    this.oWebsite.set_description('This is an updated website.');
    this.oWebsite.update();

    clientContext.load(this.oWebsite, 'Title', 'Description');

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded(sender, args) {
    alert('Title: ' + this.oWebsite.get_title() + 
        ' Description: ' + this.oWebsite.get_description());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

SharePoint リストのタスクSharePoint list tasks

JavaScript を使用してリスト オブジェクトを操作する方法は、Web サイト オブジェクトの操作方法と似ています。まず、 ClientContext(serverRelativeUrl) コンストラクターを使用して URL または URI を渡し、特定の要求コンテキストを返します。次に、 Web クラスの lists プロパティを使用して、Web サイト内のリストのコレクションを取得できます。Working with list objects using JavaScript is similar to working with website objects. Start by using the ClientContext(serverRelativeUrl) constructor and passing a URL or URI to return a specific request context. You can then use the lists property of the Web class to get the collection of lists in the website.

Web サイト内のすべてのリストのすべてのプロパティを取得するRetrieve all properties of all lists in a website

Web サイトのすべてのリストを返すには、 load(clientObject) メソッドを使用してリスト コレクションを読み込んだ後に、 executeQueryAsync(succeededCallback, failedCallback) を呼び出します。次の例は、Web サイトの URL とリストの作成日時を表示します。To return all the lists of a website, load the list collection through the load(clientObject) method, and then call executeQueryAsync(succeededCallback, failedCallback). The following example displays the URL of the website and the date and time that the list was created.

function retrieveAllListProperties(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    this.collList = oWebsite.get_lists();
    clientContext.load(collList);

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var listInfo = '';
    var listEnumerator = collList.getEnumerator();

    while (listEnumerator.moveNext()) {
        var oList = listEnumerator.get_current();
        listInfo += 'Title: ' + oList.get_title() + ' Created: ' + 
            oList.get_created().toString() + '\n';
    }
    alert(listInfo);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リストの特定のプロパティのみを表示するRetrieve only specified properties of lists

前述の例では、Web サイト内のリストのすべてのプロパティが返されます。クライアントとサーバー間の不必要なデータ転送を削減するために、LINQ クエリ式を使用して、返すプロパティを指定できます。JavaScript では、 load(clientObject) メソッドに渡されるクエリ文字列の一部として、 Include を指定し、返すプロパティを指定します。次の例では、この方法を使用して、コレクション内の各リストのタイトルと ID のみが返されます。The previous example returns all properties of the lists in a website. To reduce unnecessary data transference between client and server, you can use LINQ query expressions to specify which properties to return. In JavaScript, you specify Include as part of the query string that is passed to the load(clientObject) method to specify which properties to return. The following example uses this approach to return only the title and ID of each list in the collection.

function retrieveSpecificListProperties(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    this.collList = oWebsite.get_lists();

    clientContext.load(collList, 'Include(Title, Id)');
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var listInfo = '';
    var listEnumerator = collList.getEnumerator();

    while (listEnumerator.moveNext()) {
        var oList = listEnumerator.get_current();
        listInfo += 'Title: ' + oList.get_title() + 
            ' ID: ' + oList.get_id().toString() + '\n';
    }
    alert(listInfo);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}


取得したリストをコレクションに格納するStore retrieved lists in a collection

次の例に示すように、 load(clientObject) メソッドの代わりに loadQuery(clientObjectCollection, exp) メソッドを使用して、戻り値を lists プロパティに格納する代わりに別のコレクションに格納できます。As the following example shows, you can use the loadQuery(clientObjectCollection, exp) method instead of the load(clientObject) method to store the return value in another collection instead of storing it in the lists property.

function retrieveSpecificListPropertiesToCollection(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    var collList = oWebsite.get_lists();

    this.listInfoCollection = clientContext.loadQuery(collList, 'Include(Title, Id)');
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var listInfo = '';

    for (var i = 0; i < this.listInfoCollection.length; i++) {
        var oList = this.listInfoCollection[i];
        listInfo += 'Title: ' + oList.get_title() + 
            ' ID: ' + oList.get_id().toString();
    }
    alert(listInfo.toString());
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リストの取得にフィルターを適用するApply filters to list retrieval

次の例のように、JavaScript クエリ内の Include ステートメントをネストして、リストとそのフィールドの両方のメタデータを返すことができます。例では、Web サイト内のすべてのリストからすべてのフィールドが返され、内部名に文字列 "name" が含まれるすべてのフィールドのタイトルと内部名が表示されます。As the following example shows, you can nest Include statements in a JavaScript query to return metadata for both a list and its fields. The example returns all fields from all lists within a website and displays the title and internal name of all fields whose internal name contains the string "name".

function retrieveAllListsAllFields(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    var collList = oWebsite.get_lists();

    this.listInfoArray = clientContext.loadQuery(collList, 
        'Include(Title,Fields.Include(Title,InternalName))');

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this._onQueryFailed)
    );
}

function onQuerySucceeded() {
    var listInfo = '';

    for (var i = 0; i < this.listInfoArray.length; i++) {
        var oList = this.listInfoArray[i];
        var collField = oList.get_fields();
        var fieldEnumerator = collField.getEnumerator();
            
        while (fieldEnumerator.moveNext()) {
            var oField = fieldEnumerator.get_current();
            var regEx = new RegExp('name', 'ig');
            
            if (regEx.test(oField.get_internalName())) {
                listInfo += '\nList: ' + oList.get_title() + 
                    '\n\tField Title: ' + oField.get_title() + 
                    '\n\tField Name: ' + oField.get_internalName();
            }
        }
    }
    alert(listInfo);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}


リストの作成、更新、削除Create, update, and delete lists

クライアント オブジェクト モデルを使用して行うリストの作成、更新、および削除は, .NET クライアント オブジェクト モデルを使用してこれらの操作を行う場合と同じように動作します。ただし、クライアントの処理は、 executeQueryAsync(succeededCallback, failedCallback) 関数を呼び出すまで完了しません。Creating, updating, and deleting lists through the client object model works similarly to how you perform these tasks using the .NET client object model, although client operations do not complete until you call the executeQueryAsync(succeededCallback, failedCallback) function.

リストを作成および更新するCreate and update a list

JavaScript を使用してリスト オブジェクトを作成するには、 ListCreationInformation オブジェクトを使用してそのプロパティを定義し、そのオブジェクトを ListCollection オブジェクトの add(parameters) 関数に渡します。次の例では、新しいお知らせリストを作成しています。To create a list object using JavaScript, use the ListCreationInformation object to define its properties, and then pass this object to the add(parameters) function of the ListCollection object. The following example creates a new announcements list.

function createList(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    
    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title('My Announcements List');
    listCreationInfo.set_templateType(SP.ListTemplateType.announcements);

    this.oList = oWebsite.get_lists().add(listCreationInfo);

    clientContext.load(oList);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var result = oList.get_title() + ' created.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リストを作成した後でリストを更新する必要がある場合は、前の例に変更を加えた次の例に示すように、リスト プロパティを設定し、 update() 関数を呼び出してから executeQueryAsync(succeededCallback, failedCallback) を呼び出すことができます。If you need to update the list after it has been created, you can set list properties and call the update() function before calling executeQueryAsync(succeededCallback, failedCallback), as shown in the following modifications of the previous example.

.
.
.
.
this.oList = oWebsite.get_lists().add(listCreationInfo);

oList.set_description('New Announcements List');
oList.update();

clientContext.load(oList);
clientContext.executeQueryAsync(
    Function.createDelegate(this, this.onQuerySucceeded), 
    Function.createDelegate(this, this.onQueryFailed)
);

リストにフィールドを追加するAdd a field to a list

リストのフィールド コレクションにフィールドを追加するには、 FieldCollection オブジェクトの add(field) 関数または addFieldAsXml(schemaXml, addToDefaultView, options) 関数を使用します。次の例では、フィールドを作成し、更新してから、 executeQueryAsync(succeededCallback, failedCallback) を呼び出しています。Use the add(field) or addFieldAsXml(schemaXml, addToDefaultView, options) function of the FieldCollection object to add a field to the field collection of a list. The following example creates a field and then updates it before calling executeQueryAsync(succeededCallback, failedCallback).

function addFieldToList(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);

    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
    this.oField = oList.get_fields().addFieldAsXml(
        '<Field DisplayName=\'MyField\' Type=\'Number\' />', 
        true, 
        SP.AddFieldOptions.defaultValue
    );

    var fieldNumber = clientContext.castTo(oField,SP.FieldNumber);
    fieldNumber.set_maximumValue(100);
    fieldNumber.set_minimumValue(35);
    fieldNumber.update();

    clientContext.load(oField);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var result = oField.get_title() + ' added.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リストを削除するDelete a list

リストを削除するには、リスト オブジェクトの deleteObject() 関数を呼び出します。以下に例を示します。To delete a list, call the deleteObject() function of the list object, as shown in the following example.

function deleteList(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    this.listTitle = 'My Announcements List';

    this.oList = oWebsite.get_lists().getByTitle(listTitle);
    oList.deleteObject();

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    var result = listTitle + ' deleted.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

フォルダーの作成、更新、削除Create, update, and delete folders

JavaScript オブジェクト モデルを使用してフォルダーを操作し、内容を整理できます。以下のセクションでは、フォルダーに対する基本的な操作を実行する方法を示します。You can manipulate folders to organize your content by using the JavaScript object model. The following sections show you how to perform basic operations on folders.

ドキュメント ライブラリにフォルダーを作成するCreate a folder in a document library

フォルダーを作成するには、ListItemCreationInformation オブジェクトを使用して、基になるオブジェクト タイプを SP.FileSystemObjectType.folder に設定し、それをパラメーターとして List オブジェクトの addItem(parameters) 関数に渡します。To create a folder, you use a ListItemCreationInformation object, set the underlying object type to SP.FileSystemObjectType.folder, and pass it as a parameter to the addItem(parameters) function of the List object. 次の例に示すように、このメソッドによって返されるリスト アイテム オブジェクトのプロパティを設定した後、update() 関数を呼び出します。Set properties on the list item object that this method returns, and then call the update() function, as shown in the following example.

function createFolder(resultpanel) {
    var clientContext;
    var oWebsite;
    var oList;
    var itemCreateInfo;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Shared Documents");

    itemCreateInfo = new SP.ListItemCreationInformation();
    itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
    itemCreateInfo.set_leafName("My new folder!");
    this.oListItem = oList.addItem(itemCreateInfo);
    this.oListItem.set_item("Title", "My new folder!");
    this.oListItem.update();

    clientContext.load(this.oListItem);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        resultpanel.innerHTML = "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to see your new folder.";
    }

    function errorHandler() {
        resultpanel.innerHTML =
            "Request failed: " + arguments[1].get_message();
    }
}

ドキュメント ライブラリのフォルダーを更新するUpdate a folder in a document library

フォルダー名を更新するには、 FileLeafRef プロパティに書き込んで、 update() 関数を呼び出し、 executeQueryAsync メソッドを呼び出したときに変更が有効になるようにします。To update the folder name, you can write to the FileLeafRef property and call the update() function so that changes take effect when you call the executeQueryAsync method.

function updateFolder(resultpanel) {
    var clientContext;
    var oWebsite;
    var oList;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Shared Documents");

    this.oListItem = oList.getItemById(1);
    this.oListItem.set_item("FileLeafRef", "My updated folder");
    this.oListItem.update();

    clientContext.load(this.oListItem);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        resultpanel.innerHTML = "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to see your updated folder.";
    }

    function errorHandler() {
        resultpanel.innerHTML = "Request failed: " + arguments[1].get_message();
    }
}

ドキュメント ライブラリのフォルダーを削除するDelete a folder in a document library

フォルダーを削除するには、オブジェクトの deleteObject() 関数を呼び出します。次の例では、 getFolderByServerRelativeUrl メソッドを使用してドキュメント ライブラリからフォルダーを取得し、アイテムを削除しています。To delete a folder, call the deleteObject() function on the object. The following example uses the getFolderByServerRelativeUrl method to retrieve the folder from the document library and then deletes the item.

function deleteFolder(resultpanel) {
    var clientContext;
    var oWebsite;
    var folderUrl;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();

    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(function () {
        folderUrl = oWebsite.get_serverRelativeUrl() + "/Lists/Shared Documents/Folder1";
        this.folderToDelete = oWebsite.getFolderByServerRelativeUrl(folderUrl);
        this.folderToDelete.deleteObject();

        clientContext.executeQueryAsync(
            Function.createDelegate(this, successHandler),
            Function.createDelegate(this, errorHandler)
        );
    }, errorHandler);

    function successHandler() {
        resultpanel.innerHTML = "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to make sure the folder is no longer there.";
    }

    function errorHandler() {
        resultpanel.innerHTML = "Request failed: " + arguments[1].get_message();
    }
}

ファイルの作成、読み取り、更新、削除Create, read, update, and delete files

JavaScript オブジェクト モデルを使用してファイルを操作できます。以下のセクションでは、ファイルに対する基本的な操作を実行する方法を示します。You can manipulate files by using the JavaScript object model. The following sections show you how to perform basic operations on files.

注意

JavaScript オブジェクト モデルを使用して操作できるファイルのサイズは 1.5 MB までです。You can only work with files up to 1.5 MB by using the JavaScript object model. それより大きいファイルをアップロードするには、REST (Representational State Transfer) を使用します。To upload larger files, use REST (Representational State Transfer). 詳細については、「SharePoint REST エンドポイントを使用して基本的な操作を完了する」を参照してください。For more information, see Complete basic operations using SharePoint REST endpoints.

ドキュメント ライブラリにファイルを作成するCreate a file in a document library

ファイルを作成するには、次の例に示すように、 FileCreationInformation オブジェクトを使用して、URL 属性を設定し、Base64 エンコードしたバイトの配列としてコンテンツを追加します。To create files, you use a FileCreationInformation object, set the URL attribute, and append content as a base64 encoded array of bytes, as shown in this example.

function createFile(resultpanel) {
    var clientContext;
    var oWebsite;
    var oList;
    var fileCreateInfo;
    var fileContent;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Shared Documents");

    fileCreateInfo = new SP.FileCreationInformation();
    fileCreateInfo.set_url("my new file.txt");
    fileCreateInfo.set_content(new SP.Base64EncodedByteArray());
    fileContent = "The content of my new file";

    for (var i = 0; i < fileContent.length; i++) {
        
        fileCreateInfo.get_content().append(fileContent.charCodeAt(i));
    }

    this.newFile = oList.get_rootFolder().get_files().add(fileCreateInfo);

    clientContext.load(this.newFile);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        resultpanel.innerHTML =
            "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to see your new file.";
    }

    function errorHandler() {
        resultpanel.innerHTML = "Request failed: " + arguments[1].get_message();
    }
}

ドキュメント ライブラリのファイルの読み取りRead a file in a document library

ファイルのコンテンツを読み取るには、次の例に示すように、ファイルの URL に対して GET 操作を実行します。To read a file's content, you perform a GET operation on the file's URL, as shown in the following example.

function readFile(resultpanel) {
    var clientContext;
    var oWebsite;
    var fileUrl;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();

    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(function () {
        fileUrl = oWebsite.get_serverRelativeUrl() +
            "/Lists/Shared Documents/TextFile1.txt";
        $.ajax({
            url: fileUrl,
            type: "GET"
        })
            .done(Function.createDelegate(this, successHandler))
            .error(Function.createDelegate(this, errorHandler));
    }, errorHandler);

    function successHandler(data) {
        resultpanel.innerHTML =
            "The content of file \"TextFile1.txt\": " + data
    }

    function errorHandler() {
        resultpanel.innerHTML =
            "Request failed: " + arguments[2];
    }
}

ドキュメント ライブラリのファイルの更新Update a file in a document library

ファイルのコンテンツを更新するには、次の例に示すように、 FileCreationInformation オブジェクトを使用し、 set_overwrite() メソッドを使用して上書き属性を true に設定します。To update the file's content, you can use a FileCreationInformation object, and set the overwrite attribute to true by using the set_overwrite() method, as shown in this example.

function updateFile(resultpanel) {
    var clientContext;
    var oWebsite;
    var oList;
    var fileCreateInfo;
    var fileContent;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Shared Documents");

    fileCreateInfo = new SP.FileCreationInformation();
    fileCreateInfo.set_url("TextFile1.txt");
    fileCreateInfo.set_content(new SP.Base64EncodedByteArray());
    fileCreateInfo.set_overwrite(true);
    fileContent = "The updated content of my file";

    for (var i = 0; i < fileContent.length; i++) {

        fileCreateInfo.get_content().append(fileContent.charCodeAt(i));
    }

    this.existingFile = oList.get_rootFolder().get_files().add(fileCreateInfo);

    clientContext.load(this.existingFile);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        resultpanel.innerHTML =
            "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to see the updated \"TextFile1.txt\" file.";
    }

    function errorHandler() {
        resultpanel.innerHTML =
            "Request failed: " + arguments[1].get_message();
    }
}

ドキュメント ライブラリのファイルを削除するDelete a file in a document library

ファイルを削除するには、オブジェクトの deleteObject() 関数を呼び出します。次の例では、 getFileByServerRelativeUrl メソッドを使用してドキュメント ライブラリからファイルを取得し、アイテムを削除しています。To delete a file, call the deleteObject() function on the object. The following example uses the getFileByServerRelativeUrl method to retrieve the file from the document library, and then deletes the item.

function deleteFile(resultpanel) {
    var clientContext;
    var oWebsite;
    var fileUrl;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();

    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(function () {
        fileUrl = oWebsite.get_serverRelativeUrl() +
            "/Lists/Shared Documents/TextFile1.txt";
        this.fileToDelete = oWebsite.getFileByServerRelativeUrl(fileUrl);
        this.fileToDelete.deleteObject();

        clientContext.executeQueryAsync(
            Function.createDelegate(this, successHandler),
            Function.createDelegate(this, errorHandler)
        );
    }, errorHandler);

    function successHandler() {
        resultpanel.innerHTML =
            "Go to the " +
            "<a href='../Lists/Shared Documents'>document library</a> " +
            "to confirm that the \"TextFile1.txt\" file has been deleted.";
    }

    function errorHandler() {
        resultpanel.innerHTML = "Request failed: " + arguments[1].get_message();
    }
}

SharePoint リスト アイテムのタスクSharePoint list item tasks

JavaScript を使用してリストからアイテムを返すには、getItemById(id) 関数を使用して単一のアイテムを返すか、getItems(query) 関数を使用して複数のアイテムを返します。To return items from a list by using JavaScript, use the getItemById(id) function to return a single item, or use the getItems(query) function to return multiple items. その後、load(clientObject) 関数を使用して、アイテムを表すリスト アイテム オブジェクトを取得します。You then use the load(clientObject) function to attain list item objects that represent the items.

リストからアイテムを取得するRetrieve items from a list

\*\*getItems(query)\*\* 関数を使用すると、返されるアイテムを指定する Collaborative Application Markup Language (CAML) クエリを定義できます。未定義の \*\*CamlQuery\*\* オブジェクトを渡してリストからすべてのアイテムを返すことも、 **set_viewXml\*\* 関数を使用して CAML クエリを定義し、特定の条件を満たすアイテムを返すこともできます。以下の例では、Title および Body 列の値に加えて、Announcements リストに含まれる、コレクション ID が 10 より大きい最初の 100 アイテムの ID を表示します。The **getItems(query)** function enables you to define a Collaborative Application Markup Language (CAML) query that specifies which items to return. You can pass an undefined **CamlQuery** object to return all items from the list, or use the **set_viewXml** function to define a CAML query and return items that meet specific criteria. The following example displays the ID, in addition to the Title and Body column values, of the first 100 items in the Announcements list, starting with list items whose collection ID is greater than 10. ```js function retrieveListItems(siteUrl) { var clientContext = new SP.ClientContext(siteUrl); var oList = clientContext.get_web().get_lists().getByTitle('Announcements'); var camlQuery = new SP.CamlQuery(); camlQuery.set_viewXml( '' + '1' + '10' ); this.collListItem = oList.getItems(camlQuery); clientContext.load(collListItem); clientContext.executeQueryAsync( Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed) ); }

function onQuerySucceeded(sender, args) { var listItemInfo = ''; var listItemEnumerator = collListItem.getEnumerator();

while (listItemEnumerator.moveNext()) {
    var oListItem = listItemEnumerator.get_current();
    listItemInfo += '\nID: ' + oListItem.get_id() + 
        '\nTitle: ' + oListItem.get_item('Title') + 
        '\nBody: ' + oListItem.get_item('Body');
}

alert(listItemInfo.toString());

}

function onQueryFailed(sender, args) { alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); }


<br/>

### <a name="use-the-include-method-to-access-properties-of-listitem-objects"></a><span data-ttu-id="607f1-222">Include メソッドを使用して ListItem オブジェクトのプロパティにアクセスする</span><span class="sxs-lookup"><span data-stu-id="607f1-222">Use the Include method to access properties of ListItem objects</span></span>

<span data-ttu-id="607f1-223">リスト アイテムを返す場合、既定では、**ListItem** オブジェクトの 4 つのプロパティ (**displayName**、**effectiveBasePermissions**、**hasUniqueRoleAssignments**、および **roleAssignments**) は使用できません。</span><span class="sxs-lookup"><span data-stu-id="607f1-223">Four properties of **ListItem** objects are not available by default when you return the list items **displayName**, **effectiveBasePermissions**, **hasUniqueRoleAssignments**, and **roleAssignments**.</span></span> <span data-ttu-id="607f1-224">前の例では、これらのプロパティの 1 つにアクセスを試みた場合、**PropertyOrFieldNotInitializedException** が返されます。</span><span class="sxs-lookup"><span data-stu-id="607f1-224">The previous example returns a **PropertyOrFieldNotInitializedException** if you try to access one of these properties.</span></span> <span data-ttu-id="607f1-225">これらのプロパティにアクセスするには、次の例に示されているように、**Include** メソッドをクエリ文字列の一部として使用します。</span><span class="sxs-lookup"><span data-stu-id="607f1-225">To access these properties, use the **Include** method as part of the query string, as shown in the following example.</span></span>
 
> [!NOTE] 
> <span data-ttu-id="607f1-226">クライアント オブジェクト モデルに対して LINQ を使用してクエリを作成する場合は、サーバー オブジェクト モデルに対してコードを書き込むときにのみ使用できる [LINQ to SharePoint プロバイダー](http://msdn.microsoft.com/library/ee535491)ではなく、[LINQ to Objects](http://msdn.microsoft.com/library/bb397919) を使用します。</span><span class="sxs-lookup"><span data-stu-id="607f1-226">When you use LINQ to create queries against the client object model, you are using  [LINQ to Objects](http://msdn.microsoft.com/library/bb397919), not the [LINQ to SharePoint provider](http://msdn.microsoft.com/library/ee535491), which can only be used when you write code against the server object model.</span></span>

```js
function retrieveListItemsInclude(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');

    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><RowLimit>100</RowLimit></View>');
    this.collListItem = oList.getItems(camlQuery);

    clientContext.load(
        collListItem, 
        'Include(Id, DisplayName, HasUniqueRoleAssignments)'
    );
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded(sender, args) {
    var listItemInfo = '';
    var listItemEnumerator = collListItem.getEnumerator();
        
    while (listItemEnumerator.moveNext()) {
        var oListItem = listItemEnumerator.get_current();
        listItemInfo += '\nID: ' + oListItem.get_id() + 
            '\nDisplay name: ' + oListItem.get_displayName() + 
            '\nUnique role assignments: ' + 
            oListItem.get_hasUniqueRoleAssignments();
    }

    alert(listItemInfo.toString());
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}


この例では Include を使用しているので、クエリを実行した後は指定したプロパティのみを使用できます。Because this example uses an Include, only the specified properties are available after query execution. したがって、指定されているもの以外のプロパティにアクセスしようとすると、PropertyOrFieldNotInitializedException を受け取ります。Therefore, you receive a PropertyOrFieldNotInitializedException if you try to access other properties beyond those that have been specified. また、get_contentTypeget_parentList など、関数を使用して親オブジェクトのプロパティにアクセスしようとしても、このエラーを受け取ります。In addition, you receive this error if you try to use functions such as get_contentType or get_parentList to access the properties of containing objects.

アイテムの取得に関する制限事項Restrictions on retrieving items

SharePoint Foundation 2010 内の JavaScript オブジェクト モデルの loadQuery(clientObjectCollection, exp) メソッドでは、マネージ オブジェクト モデルで使用される LINQ メソッドと演算子がサポートされません。The loadQuery(clientObjectCollection, exp) method of the JavaScript object model in SharePoint Foundation 2010 does not support LINQ methods and operators that are used by the managed object model.


リスト アイテムの作成、更新、削除Create, update, and delete list items

クライアント オブジェクト モデルでは、サーバー オブジェクト モデルとほぼ同じように、リスト アイテムを作成、更新、または削除できます。リスト アイテム オブジェクトを作成し、そのプロパティを設定して、オブジェクトを更新します。リスト アイテム オブジェクトを変更または削除するには、ListItemCollection オブジェクトの getById(id) 関数を使用してオブジェクトを返します。次に、プロパティを設定してこのメソッドによって返されるオブジェクトの更新を呼び出すか、オブジェクト独自の削除メソッドを呼び出します。サーバー オブジェクト モデルと異なり、クライアント オブジェクト モデルでは、それぞれの操作の最後で executeQueryAsync(succeededCallback, failedCallback) を呼び出して、サーバー上に変更を反映する必要があります。Creating, updating, or deleting list items through the client object model works similarly to performing these tasks through the server object model. You create a list item object, set its properties, and then update the object. To modify or delete a list item object, use the getById(id) function of the ListItemCollection object to return the object, and then either set properties and call update on the object that this method returns, or call the object's own method for deletion. Unlike the server object model, each of these operations in the client object model must conclude with a call to executeQueryAsync(succeededCallback, failedCallback) for changes to take effect on the server.

リスト アイテムを作成するCreate a list item

リスト アイテムを作成するには、ListItemCreationInformation オブジェクトを作成し、プロパティを設定して、それをパラメーターとして List オブジェクトの addItem(parameters) 関数に渡します。To create list items, you create a ListItemCreationInformation object, set its properties, and pass it as a parameter to the addItem(parameters) function of the List object. 次の例に示すように、このメソッドによって返されるリスト アイテム オブジェクトのプロパティを設定した後、update() 関数を呼び出します。Set properties on the list item object that this method returns, and then call the update() function, as shown in the following example.

function createListItem(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
        
    var itemCreateInfo = new SP.ListItemCreationInformation();
    this.oListItem = oList.addItem(itemCreateInfo);
    oListItem.set_item('Title', 'My New Item!');
    oListItem.set_item('Body', 'Hello World!');
    oListItem.update();

    clientContext.load(oListItem);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    alert('Item created: ' + oListItem.get_id());
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リスト アイテムを更新するUpdate a list item

ほとんどの場合、リスト アイテム プロパティを設定するには、列インデクサーを使用して割り当てを作成し、executeQueryAsync(succeededCallback, failedCallback) を呼び出すときに、update() 関数を呼び出して変更を反映できます。To set most list item properties, you can use a column indexer to make an assignment, and call the update() function so that changes take effect when you call executeQueryAsync(succeededCallback, failedCallback). 次の例では、Announcements リストの 3 番目のアイテムのタイトルを設定しています。The following example sets the title of the third item in the Announcements list.

function updateListItem(siteUrl) {
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');

    this.oListItem = oList.getItemById(3);
    oListItem.set_item('Title', 'My Updated Title');
    oListItem.update();

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    alert('Item updated!');
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

リスト アイテムを削除するDelete a list item

リスト アイテムを削除するには、オブジェクトで deleteObject() 関数を呼び出します。次の例では、 getItemById(id) 関数を使用してリストの 2 番目のアイテムを返し、そのアイテムを削除しています。SharePoint では、コレクション内のアイテムを削除しても、そのアイテムの整数の ID が保持されます。したがって、たとえば、リスト内の 2 番目のアイテムの ID が 2 にならない場合があります。存在しないアイテムに対して deleteObject() 関数が呼び出された場合は、 ServerException が返されます。To delete a list item, call the deleteObject() function on the object. The following example uses the getItemById(id) function to return the second item from the list, and then deletes the item. SharePoint maintains the integer IDs of items within collections, even if they have been deleted. So, for example, the second item in a list might not have 2 as its identifier. A ServerException is returned if the deleteObject() function is called for an item that does not exist.

function deleteListItem(siteUrl) {
    this.itemId = 2;
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
    this.oListItem = oList.getItemById(itemId);
    oListItem.deleteObject();

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function onQuerySucceeded() {
    alert('Item deleted: ' + itemId);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

たとえば、削除操作によって更新された新しいアイテム数を取得する必要がある場合は、update() メソッドへの呼び出しを含めて、リストを更新します。また、クエリを実行する前に、リスト オブジェクト自体、またはリスト オブジェクト上の itemCount プロパティのどちらかを読み込む必要があります。リスト アイテムの開始数と終了数の両方を取得する場合は、前の例に次の変更を加えて、2 つのクエリを実行し、アイテム数を 2 回返す必要があります。If you want to retrieve, for example, the new item count that results from a delete operation, include a call to the update() method to refresh the list. In addition, you must load either the list object itself or the itemCount property on the list object before executing the query. If you want to retrieve both a start and end count of the list items, you must execute two queries and return the item count twice, as shown in the following modification of the previous example.

function deleteListItemDisplayCount(siteUrl) {
    this.clientContext = new SP.ClientContext(siteUrl);
    this.oList = clientContext.get_web().get_lists().getByTitle('Announcements');
    clientContext.load(oList);

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.deleteItem), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function deleteItem() {
    this.itemId = 58;
    this.startCount = oList.get_itemCount();
    this.oListItem = oList.getItemById(itemId);
    oListItem.deleteObject();

    oList.update();
    clientContext.load(oList);
        
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.displayCount), 
        Function.createDelegate(this, this.onQueryFailed)
    );
}

function displayCount() {
    var endCount = oList.get_itemCount();
    var listItemInfo = 'Item deleted: ' + itemId + 
        '\nStart Count: ' +  startCount + 
        ' End Count: ' + endCount;
        
    alert(listItemInfo)
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + 
        '\n' + args.get_stackTrace());
}

ホスト Web のオブジェクトへのアクセスAccess objects in the host web

アドインの開発中に、ホスト Web にアクセスしてその中のアイテムを操作することが必要になる場合があります。次の例に示すように、 AppContextSite オブジェクトを使用して、ホスト Web やその他の SharePoint サイトを参照します。完全なコード サンプルについては、「 クロスドメイン ライブラリ (JSOM) を使用してホスト Web タイトルを取得する」を参照してください。While developing your add-in, you might need to access the host web to interact with items in it. Use the AppContextSite object to reference the host web or other SharePoint sites, as shown in the following example. For a full code sample, see Get the host web title using the cross-domain library (JSOM).

function execCrossDomainRequest(appweburl, hostweburl) {
    // context: The ClientContext object provides access to
    //      the web and lists objects.
    // factory: Initialize the factory object with the
    //      add-in web URL.
    var context;
    var factory;
    var appContextSite;

    context = new SP.ClientContext(appweburl);
    factory = new SP.ProxyWebRequestExecutorFactory(appweburl);
    context.set_webRequestExecutorFactory(factory);
    appContextSite = new SP.AppContextSite(context, hostweburl);

    this.web = appContextSite.get_web();
    context.load(this.web);

    // Execute the query with all the previous 
    //  options and parameters.
    context.executeQueryAsync(
        Function.createDelegate(this, successHandler), 
        Function.createDelegate(this, errorHandler)
    );

    // Function to handle the success event.
    // Prints the host web's title to the page.
    function successHandler() {
        alert(this.web.get_title());
    }

    // Function to handle the error event.
    // Prints the error message to the page.
    function errorHandler(data, errorCode, errorMessage) {
        alert("Could not complete cross-domain call: " + errorMessage);
    }
}

前の例では、SharePoint のクロスドメイン ライブラリを使用してホスト Web にアクセスしています。The previous example uses the cross-domain library in SharePoint to access the host web. 詳細については、「クロスドメイン ライブラリを使用してアドインから SharePoint のデータにアクセスする」を参照してください。For more information, see Access SharePoint data from add-ins using the cross-domain library.

関連項目See also