---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# ServiceNowインスタンス内のテーブルデータの操作

# ServiceNowインスタンス内のテーブルデータの操作 {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：7分

Mobile SDKを使用すると、ServiceNowインスタンスに存在するテーブル内のデータを操作できます。このデータは、REST インターフェイスを直接呼び出す NowTableService() API を使用する ServiceNow REST Table API を介して、または REST GraphQL API に対して指定された GraphQL クエリを実行する NowGraphQLService() API を介して操作できます。
1回の呼び出しで複数のテーブルからデータを返す場合は、 NowGraphQLService() APIを使用する必要があります。テーブル API 以外の ServiceNow REST API とやり取りする必要がある場合は、「[ServiceNowインスタンスでのパブリック REST API とのやり取り](https://servicenow-prod.fluidtopics.net/OdGugF_onH5e8Xe7U0BZeA "Mobile SDKは、AndroidアプリケーションがServiceNowインスタンスでパブリック REST API を呼び出せるようにする機能を提供します。")」を参照してください。

## NowGraphQLService を使用した ServiceNow テーブルとのやり取り {#mobsdk-and-interact_data_instance__section_kxm_wdf_hqb}

[NowGraphQLService](https://servicenow-prod.fluidtopics.net/XDTNHW07RxQg097hwPm4VA#NowGQLServiceAndroidInterface "NowGraphQLService インターフェイスは、GraphQL API を使用してServiceNowに GraphQL 要求を送信できる関数を提供します。") クラスは、ログインしているユーザーが適切な権限を持っている場合に、ServiceNow インスタンス内の指定されたテーブルで GraphQL クエリを構築して実行できるメソッドを提供します。すべての CRUD 操作を GraphQL クエリ内で定義できます。  
次の例は、NowData フレームワークをインポートし、 ServiceNow インスタンス内のテーブルとのやり取りに使用できる NowGraphQLService オブジェクトを初期化する方法を示しています。

    /**
     * Helper class used to handle different Now service instances.
     */
    @Singleton
    class SdkManager @Inject constructor() {

        private var nowGraphQLService: NowGraphQLService? = null

        /**
         * Create the NowGraphQLService once in the lifetime of the application inside the Application class or another manager class
         * that will be injected into other classes via dagger/hilt.
         * NowGraphQLService should be created after initializing the NowSDK
         */
        suspend fun getNowGraphQLService(): NowGraphQLService? {
            if (nowGraphQLService != null) return nowGraphQLService

            return NowDataSDK.makeGraphQLService(URL("https://instance-name.service-now.com")).getOrThrow()
                .also { this.nowGraphQLService = it }
        }
    }

この例では、GraphQL クエリを使用して公開された KB 記事を取得する方法を示します。

    suspend fun loadList() = withContext(Dispatchers.IO) {
        val kbArticlesQuery = """
        { 
            GlideRecord_Query {
                kb_knowledge(queryConditions: "active=true^ORDERBYpublishedDESC"
                pagination:{ limit: 10, offset: 0 }) {
                    _results {
                        sys_id { value },
                        number { displayValue },
                        short_description { displayValue },
                        author { displayValue }
                        published { displayValue }
                    }
                }
            }
         }
     """
        val graphQLService = sdkManager.getNowGraphQLService()

        //graphQLService?.graphQLRequest(kbArticlesQuery)?.execute() can also be used
        graphQLService?.graphQLRequest(kbArticlesQuery)?.enqueue(
            { response ->
                response.body?.let {
                    val resultString = String(it)
                }

            }, { nowDataError ->
                //handle error
            })
    }

## NowTableService を使用した ServiceNow テーブルとの対話 {#mobsdk-and-interact_data_instance__section_fgn_gy2_hqb}

[NowTableService](https://servicenow-prod.fluidtopics.net/p6Snx8VtraS60vcC8uIN3A#NowTableServiceAndroidInterface "NowTableService インターフェイスは、ServiceNowインスタンス上のテーブル内のレコードを作成、読み取り、削除、および更新できる関数を提供します。") クラスは、ServiceNowインスタンスに存在するテーブル内のレコードに対して CRUD 操作を実行するためのメソッドを提供します。このインターフェイスから、ログインしているユーザーが許可されている ServiceNow テーブル内の任意のレコードに直接アクセスできます。NowTableService は、 参照フィールドのドット連結をサポートしています。たとえば、テーブルにユーザーテーブルへの参照が含まれている場合、ドット連結値 `user.name` はユーザーの名前を返します。

要求されたデータを返すと、該当するすべてのアクセス制御リスト (ACL) がデータに適用されるため、結果が予想よりも少なくなるか、認証されたユーザーが指定されたテーブルへのアクセス権を持っていない場合は認証エラーが発生する可能性があります。  
次の例は、 NowData フレームワークをインポートし、 ServiceNow インスタンステーブルとのやり取りに使用できる NowTableServce オブジェクトを初期化する方法を示しています。

    /**
     * Helper class used to handle different Now service instances. It has an application scope or is Singleton
     */
    @Singleton
    class SdkManager @Inject constructor() {

        private var nowTableService: NowTableService? = null

        /**
         * Create the NowTableService once in the lifetime of the application inside the Application class or another manager class
         * that will be injected into other classes via dagger/hilt.
         * NowTableService should be created after initializing the NowSDK
         */
        suspend fun getNowTableService(): NowTableService? {
            if (nowTableService != null) return nowTableService

            return NowDataSDK.makeTableService(URL("https://instance-name.service-now.com")).getOrThrow()
                .also { this.nowTableService = it }
        }
     }    


    suspend fun loadCases() = withContext(Dispatchers.IO) {
        val tableService = sdkManager.getNowTableService()

        //configure what data to pass back
        val fetchConfiguration =  FetchConfiguration(Filter("active=true"), 10)

        val response = runCatching {
            tableService?.records(
                "sn_customerservice_case",
                fetchConfiguration
            )?.execute()
        }

        if (response.isSuccess) {
            val resultString = response.getOrNull()?.body?.let { String(it) }
        } else {
            //handle unsuccessful result
        }
    }

使用可能な NowTableService メソッドを使用するその他のコード例については、 [NowTableService](https://servicenow-prod.fluidtopics.net/p6Snx8VtraS60vcC8uIN3A#NowTableServiceAndroidInterface "NowTableService インターフェイスは、ServiceNowインスタンス上のテーブル内のレコードを作成、読み取り、削除、および更新できる関数を提供します。") API ドキュメントを参照してください。

