OneNote クライアントを開くOpen the OneNote client

ページまたはノートブックの links プロパティを使用して、OneNote アプリケーションで特定のぺージまたはノートブックを開きます。You can use the links property of a page or notebook to open a OneNote application to a particular page or notebook.

links プロパティは 2 つの URL を含む JSON オブジェクトです。The links property is a JSON object that contains two URLs. Url は、OneNote クライアントアプリケーションまたは web 上の OneNote でページまたはノートブックを開きます。The URLs will open the page or notebook in the OneNote client application or in OneNote on the web.

{ 
    "links": {
        "oneNoteClientUrl": {
            "href": "onenote:https://..."
        },
        "oneNoteWebUrl": {
            "href": "https://..."
        }
    }
}
  • oneNoteClientUrloneNoteClientUrl

    • OneNote クライアントがデバイスにインストールされている場合は、そのクライアントを開きます。Opens the OneNote client if it is already installed on the device. この URL には、onenote プレフィックスが含まれています。This URL includes the onenote prefix.
    • Opens the language-specific version if one is installed on the device. Otherwise, uses the platform language setting.Opens the language-specific version if one is installed on the device. Otherwise, uses the platform language setting.
  • oneNoteWebUrloneNoteWebUrl

    • デバイスの既定のブラウザーが OneNote をサポートしている場合、その web 上で OneNote を開きます。Opens OneNote on the web if the default browser on the device supports it.
    • ブラウザーの言語設定を使用します。Uses the browser language setting.

OneNote API は、次の操作の HTTP 応答で links プロパティを返します。The OneNote API returns the links property in the HTTP response for the following operations:

次の例では、応答の状態コードを確認し、JSON を解析して URL を抽出し、OneNote クライアントを開く方法を示しています。The following examples show how to check the status code of the response, parse the JSON to extract the URLs, and then open the OneNote client.

iOS の例iOS example

次の例では、JSON 応答から OneNote クライアントの URL を取得します。The following example gets the OneNote client URLs from the JSON response. AFNetworking ライブラリ (https://afnetworking.com/)) を使用して、2 つの URL を抽出します。It uses the AFNetworking library (https://afnetworking.com/) to extract the two URLs. この例では、created は、応答値を格納するために使用される ONSCPSStandardResponse オブジェクトへのポインターであり、responseObject は解析された JSON を保持します。In the example, created is a pointer to the ONSCPSStandardResponse object used to store the response values, and responseObject holds the parsed JSON.

    /* Import the JSON library */
    #import "AFURLRequestSerialization.h"

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
            if(delegate) {
                  int status = [returnResponse statusCode];
                  ONSCPSStandardResponse *standardResponse = nil;
                  if (status == 201) {
                        ONSCPSCreateSuccessResponse *created = 
                              [[ONSCPSCreateSuccessResponse alloc] init];
                        created.httpStatusCode = status;
                        NSError *jsonError;
                        NSDictionary *responseObject = 
                              [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&jsonError];
                        if(responseObject && !jsonError) {
                              created.oneNoteClientUrl = ((NSDictionary *)
                                    ((NSDictionary *)responseObject[@"links"])[@"oneNoteClientUrl"])[@"href"];
                              created.oneNoteWebUrl = ((NSDictionary *)
                                    ((NSDictionary *)responseObject[@"links"])[@"oneNoteWebUrl"])[@"href"];
                        }
                  standardResponse = created;
                  }
                  else {
                        ONSCPSStandardErrorResponse *error = [[ONSCPSStandardErrorResponse alloc] init];
                        error.httpStatusCode = status;
                        error.message = [[NSString alloc] initWithData:returnData 
                              encoding:NSUTF8StringEncoding];
                        standardResponse = error;
                  }
                  // Send the response back to the client.
                  if (standardResponse) {
                        [delegate exampleServiceActionDidCompleteWithResponse: standardResponse];
                  }
            }
      }

応答から URL を解析した後は、次のコードを使用して OneNote を開くことができるようになります。After you parse the URLs from the response, you can open OneNote by using the following code. oneNoteClientUrl使用して、インストールされoneNoteWebURLている onenote クライアントを開くか、web 上の onenote を開きます。Use oneNoteClientUrl to open the installed OneNote client or oneNoteWebURL to open OneNote on the web.

NSURL *url = [NSURL URLWithString:standardResponse.oneNoteWebUrl];
[[UIApplication sharedApplication] openURL:url];

Android の例Android example

まず成功状態コードを確認し、次に JSON を解析します。First, check for the success status code, and then parse the JSON. この例では POST 要求が送信されていることを前提としているので、201 Created 状態コードが確認されます。The example assumes a POST request was sent, so it checks for a 201 Created status code. GET 要求を行った場合は、代わりに 200 状態コードを確認します。If you made a GET request, check for a 200 status code instead.

public ApiResponse getResponse() throws Exception {
    /* Get the HTTP response code and message from the connection object */
    int responseCode = mUrlConnection.getResponseCode();
    String responseMessage = mUrlConnection.getResponseMessage();
    String responseBody = null;

    /* Get the response if the new page was created successfully. */
    if ( responseCode == 201) {
        InputStream is = mUrlConnection.getInputStream();

        /* Verify that this byte array is big enough. */
        byte[] b1 = new byte[1024];
        StringBuffer buffer = new StringBuffer();

        /* Copy the body of the response into the new string. */
        /* Make sure the buffer is big enough. */
        while ( is.read(b1) != -1)
            buffer.append(new String(b1));

      /* When the returned data is complete, close the connection 
         and convert the byte array into a string. */
        mUrlConnection.disconnect();
        responseBody =  buffer.toString();
    }

    /* Create a new JSON object, and an object to hold the response URLs. */
    JSONObject responseObject = null;
    ApiResponse response = new ApiResponse();
    try {

        /* Store and verify the HTTP response code. */
        response.setResponseCode(responseCode);
        response.setResponseMessage(responseMessage);
        if ( responseCode == 201) {

            /* Retrieve the two URLs from the links property. */
            responseObject = new JSONObject(responseBody);
            String clientUrl = responseObject.getJSONObject(
                "links").getJSONObject("oneNoteClientUrl").getString("href");
            String webUrl = responseObject.getJSONObject(
                "links").getJSONObject("oneNoteWebUrl").getString("href");
            response.setOneNoteClientUrl(clientUrl);
            response.setOneNoteWebUrl(webUrl);
        }
    } catch (JSONException ex) {

        /* If the JSON was malformed or incomplete... */
        String msg = ex.getMessage();
        msg = msg;
    }
    return response;
}

Response プロパティを使用すると、次の例に示すように、アプリから web 上の OneNote を開くことができます。Using the response properties, your app can open OneNote on the web, as shown in the following example.

if (response.getResponseCode() == 201) {
    Uri uriUrl = Uri.parse(response.getOneNoteWebUrl);  
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
    startActivity(launchBrowser);
}

または、アプリで Android デバイスの OneNote クライアントを開くことができます。Or your app can open the OneNote client on an Android device. oneNoteClientUrl プロパティを使用するときには、Intent を開始する前に、中かっこ { } で GUID 文字列を囲む必要があります。When using the oneNoteClientUrl property, you must surround the GUID strings with braces { } before starting the Intent. 次の例に方法を示します。The following example shows how to do that.

if (response.getResponseCode() == 201) {

    // Get the URL from the OneNote API JSON response.
    String onenoteClientUrl = obtainClientLinkFromJSONResponse();
    String androidClientUrl = 
        onenoteClientUrl.replaceAll(
            "=([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})&",
            "={$1}&");

    // Open the URL: Open the newly created OneNote page.
    Uri uriUrl = Uri.parse(androidClientUrl);  
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
    startActivity(launchBrowser);
}

関連項目See also