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 makes the object model available in several forms. SharePointでは、オブジェクト モデルをいくつかの形式で利用できます。SharePoint makes the CSOM 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 データで動作するように SharePoint JavaScript API を使用する」をご参照ください。Note 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 <スクリプト> タグを使用して、オブジェクトモデルへのレファレンスを追加することができます。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:

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 <[スクリプト]> タグを使用してオブジェクトモデルへレファレンスを追加できます。When you create a cloud-hosted add-in, you can add a reference to the object model by using HTML <script> tags. アドイン Web はクラウド ホスト アドインのすべてのシナリオに存在しない可能性があるため、ホストWebを参照することをお勧めします。ホストのWeb URLは、 {StandardTokens} トークンを使用している場合、 SPHostUrl クエリ文字列パラメータから検索できます。When you create a cloud-hosted add-in, you can add a reference to the object model by using HTML tags. 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. You can also use your custom defined query string parameter if you are using the {HostUrl} token. After you have the host web URL, you must use JavaScript code to dynamically create the reference to the object model. {HostUrl} トークンをご使用の場合、カスタム定義のクエリ文字列パラメータを使用することもできます。You can also use your custom defined query string parameter if you are using the {HostUrl} token. ホストの ウェブ 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] クラスを使用して、指定されたコンテキスト URL にある ウェブサイト オブジェクトのプロパティを指定します。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) を呼び出すことで、そのウェブサイトのすべてのプロパティにアクセスできます。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.

次の例は、指定された ウェブ サイトのタイトルと説明を表示しますが、ウェブサイト オブジェクトを読み込んでクエリを実行すると、デフォルトで返還される他のすべてのプロパティが使用可能になります。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());
}


ウェブサイトの選択したプロパティのみの取得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] に設定し、それをパラメータとして、 リスト オブジェクト に関する [addItem(パラメータ)] 関数にします。To create a folder, you use a ListItemCreationInformation object, set the underlying object type to SP.FileSystemObjectType.folder, and pass it as parameter to the addItem(parameters) function of the List object. Set properties on the list item object that this method returns, and then call the update() function, as shown in the following example. この方法が返還するリスト アイテム オブジェクトにプロパティを設定し、次の例に示すように, [更新()] 機能を呼び出します。To create list items, you create a ListItemCreationInformation object, set its properties, and pass it as parameter to the addItem(parameters) function of the List object. 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 までのみのファイルで作業できます。Note You can only work with files up to 1.5 MB by using the JavaScript object model. To upload larger files, use REST (Representational State Transfer). For more information, see . より大きなファイルをアップロードするには、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 using JavaScript, use the getItemById(id) function to return a single item, or use the getItems(query) function to return multiple items. You then use the load(clientObject) function to attain list item objects that represent the 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.

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(
        '<View><Query><Where><Geq><FieldRef Name=\'ID\'/>' + 
        '<Value Type=\'Number\'>1</Value></Geq></Where></Query>' + 
        '<RowLimit>10</RowLimit></View>'
    );
    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());
}


Include メソッドを用いた ListItem オブジェクトのプロパティへのアクセスUse the Include method to access properties of ListItem objects

ListItem オブジェクトの 4 つの特性は、 displayNameeffectiveBasePermissionshasUniqueRoleAssignments、および roleAssignments といったリスト アイテムを返還する場合、デフォルトでは使用できません。Four properties of ListItem objects are not available by default when you return the list items displayName, effectiveBasePermissions, hasUniqueRoleAssignments, and roleAssignments. 前の例では、これらのプロパティのいずれかにアクセスしようとした場合、 PropertyOrFieldNotInitializedException を返します。The previous example returns a PropertyOrFieldNotInitializedException if you try to access one of these properties. これらのプロパティにアクセスするには、 含める メソッドをクエリ文字列の一部として使用します。次の例をご参照下さい。To access these properties, use the Include method as part of the query string, as shown in the following example.

注意

クライアント オブジェクト モデルに対して LINQ を使用してクエリを作成する場合は、サーバー オブジェクト モデルに対してコードを書き込むときにのみ使用できる LINQ to SharePoint プロバイダーではなく、LINQ to Objects を使用します。When you use LINQ to create queries against the client object model, you are using LINQ to Objects, not the LINQ to SharePoint provider, which can only be used when you write code against the server object model.

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());
}


この例では、 含めるクエリを使用するため、指定されたプロパティのみが使用可能になります。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. また、オブジェクトを含むプロパティにアクセスするために、 取得する_contentType または 取得する_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) 関数を使用してオブジェクトを返します。次に、プロパティを設定してこのメソッドによって返されるオブジェクトの更新を呼び出すか、オブジェクト独自の削除メソッドを呼び出します。サーバー オブジェクト モデルと異なり、クライアント オブジェクト モデルでは、それぞれの操作の最後で to 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] オブジェクトを作成し、そのプロパティを設定し、それをパラメータとして、 リスト オブジェクトに関する [addItem(パラメータ)] 関数とします。To create list items, you create a ListItemCreationInformation object, set its properties, and pass it as parameter to the addItem(parameters) function of the List object. Set properties on the list item object that this method returns, and then call the update() function, as shown in the following example. この方法が返還するリスト アイテム オブジェクトにプロパティを設定し、次の例に示すように, [更新()] 機能を呼び出します。To create list items, you create a ListItemCreationInformation object, set its properties, and pass it as parameter to the addItem(parameters) function of the List object. 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

ほとんどのリスト アイテムのプロパティを設定するには、列インデクサーを用いて割り当てを行い、 [update()] 関数を使用して [executeQueryAsync(succeededCallback、failedCallback)] を呼び出す際に、変更が有効となります。To set most list item properties, you can use a column indexer to make an assignment, and call the update() function so that changes will take effect when you call executeQueryAsync(succeededCallback, failedCallback). The following example sets the title of the third item in the Announcements list. 次の例では、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());
}


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

関連項目See also