Microsoft Excel Online Connector 1.1 の例

この例では、Microsoft Excel Online Connector を使用して次のアクションを実行する方法を示しています。

始める前に

この例を実行するには、以下が必要です。

  • Anypoint Studio 7.3.5 以降

  • Microsoft Excel Online Connector 1.0 以降

  • Microsoft Excel Online の作業インスタンス

OAuth 認証を設定する

このコネクタでは、OAuth を使用して接続を保護するため、OAuth 項目値 (クライアントログイン情報、キー、OAuth 関連の URL など) を指定する必要があります。次の手順を実行します。

  • OAuth 接続の設定ファイルを作成します。

  • OAuth 関連のグローバル要素を設定します。

  • プロパティファイルのグローバル要素を設定します。

OAuth 接続の設定ファイルを作成する

[​Authorization Code​ (クライアントログイン情報)] 許可種別のプロパティが含まれる OAuth 接続の設定ファイルを作成します。

  1. /src/main/resources/​ フォルダー内に ​mule-app.properties​ という名前のファイルを作成します。

  2. mule-app.properties​ ファイルで、次のような [​Authorization Code​ (認証コード)] 許可種別の一連のプロパティを作成します。括弧で囲まれたテキスト (括弧を含む) は、各自の OAuth 設定の適切な値に置き換えます。

    config.oauth.authorization.code.consumerKey=<consumerKey>
    config.oauth.authorization.code.consumerSecret=<consumerSecret>
    config.oauth.authorization.code.authorizationUrl=<authorizationUrl>
    config.oauth.authorization.code.accessTokenUrl=<accessTokenUrl>

プロパティファイルの作成についての詳細は、​「プロパティプレースホルダーの設定」​を参照してください。

OAuth グローバル要素を設定する

OAuth_Authorization_Code_Config​ ファイルのグローバル要素を設定します。

  1. 新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューで、​[Search in Exchange (Exchange 内を検索)]​ をクリックして「​microsoft excel​」と入力します。

  3. [Selected modules (選択したモジュール)]​ セクションに ​[Microsoft Excel Online Connector]​ を追加し、​[Finish (完了)]​ をクリックします。

  4. [Global Elements (グローバル要素)]​ タブをクリックし、​[Create (作成)]​ をクリックします。

  5. [Connector Configuration (コネクタ設定)] > [Microsoft Excel Online Authorization Code Config (Microsoft Excel Online 認証コード設定)]​ を選択し、​[OK]​ をクリックします。

  6. 次の値を入力します。

    項目

    Name (名前)

    OAuth_Authorization_Code_Config

    Consumer key (コンシューマーキー)

    ${config.oauth.authorization.code.consumerKey}

    Consumer secret (コンシューマーシークレット)

    ${config.oauth.authorization.code.consumerSecret}

    Authorization url (認証 URL)

    ${config.oauth.authorization.code.authorizationUrl}

    Access token url (アクセストークン URL)

    ${config.oauth.authorization.code.accessTokenUrl}

    スコープ

    デフォルト (​https://graph.microsoft.com/.default​) のままにします。

    Listener config (リスナー設定)

    auth

    Callback path (コールバックパス)

    /callback

    Authorize path (認証パス)

    authorizePath

    External callback url (外部コールバック URL)

    http://localhost:8083/callback

  7. [OK]​ をクリックします。

プロパティファイルのグローバル要素を設定する

mule-app.properties​ ファイルのグローバル要素を設定し、このファイルの検索場所が Mule で認識されるようにします。

  1. [Global Elements (グローバル要素)]​ タブをクリックし、​[Create (作成)]​ をクリックします。

  2. [Choose Global Type (グローバル種別の選択)]​ ダイアログで、​[Configuration properties (設定プロパティ)]​ を選択し、​[OK]​ をクリックします。

  3. [File (ファイル)]​ 項目に「​mule.app.properties​」と入力します。

  4. [OK]​ をクリックします。

ワークシートを追加する

次のスクリーンショットは、新しいワークシートを追加する Studio アプリケーションフローを示しています。

Add Worksheet Studio フロー
Figure 1. このようなフローを使用して、新しいワークシートを追加します。

新しいワークシートを追加するには、HTTP ​Listener​ コンポーネント、​Transform Message​ コンポーネント、​Add worksheet​ 操作、​Logger​ コンポーネントを設定する必要があります。

フローを作成する手順は、次のとおりです。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ で​「HTTP」​を検索し、​Listener​ 操作を選択します。

  3. [Listener]​ 操作をキャンバスにドラッグします。

  4. Listener​ 設定で、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  5. デフォルトを受け入れます。

  6. [HTTP] プロパティウィンドウで、​[Path (パス)]​ 項目を ​/create​ に設定します。

[Transform Message] コンポーネントを追加する

最初の ​Transform Message​ コンポーネントでは、チームの作成に使用する入力のテンプレートを作成します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「transform message」​を検索します。

  2. Transform Message​ コンポーネントをキャンバスの ​Listener​ コンポーネントの右にドラッグします。

  3. Transform Message​ 設定で、​[Output (出力)]​ セクションの括弧を次の XML で上書きします。

    <ee:set-payload ><![CDATA[%dw 2.0
    output application/json
    ---
    {
    	workbookId: attributes.queryParams.workbookID,
    	worsheetname: attributes.queryParams.worksheetName
    }]]></ee:set-payload>

Add Worksheet 操作を追加する

Add Worksheet​ 操作では、ユーザー入力に基づいて新しいワークシートを作成します。

  1. [Add worksheet]​ 操作をキャンバスの ​[Transform Message]​ コンポーネントの右にドラッグします。

  2. [Add worksheet] の設定で、​[Connector configuration (コネクタ設定)]​ ドロップダウンをクリックし、​[Microsoft-Excel-Online-Authorization-Code-Config]​ を選択します。

  3. グローバル要素種別として ​[Microsoft_Excel_Online_Authorization_Code_Config]​ を選択し、​[OK]​ をクリックします。

  4. [Add worksheet] のプロパティウィンドウで、次の項目を設定します。

    項目

    Workbook Id (ワークブック ID)

    payload.workbookId

    Worksheet Name (ワークシート名)

    payload.worsheetname

ワークシートをリストする

ワークシートをリストする 2 番目のフローを作成します。 このフローでは、​List worksheet​ 操作を使用します。

List Worksheet Studio フロー
Figure 2. このようなフローを使用して、ワークシートをリストします。

ワークシートを更新する

ワークシートに関する情報を更新する 3 番目のフローを作成します。 このフローでは、​Update worksheet​ 操作を使用します。

Update Worksheet Studio フロー
Figure 3. このようなフローを使用して、ワークシートに関する情報を更新します。

ワークシートを削除する

ワークシートを削除する 4 番目のフローを作成します。 このフローでは、​Delete worksheet​ 操作を使用します。

Delete Worksheet Studio フロー
Figure 4. このようなフローを使用して、ワークシートを削除します。

アプリケーションを実行する

アプリケーションを実行する手順は、次のとおりです。

  1. Package Explorer でプロジェクトを右クリックし、​[Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)]​ を選択します。

  2. アプリケーションをデプロイしたら、Web ブラウザーを開きます。

  3. http://localhost:8081/authorize​ という URL を入力して、OAuth ダンスを開始します。

  4. ログイン画面で、Microsoft Excel Online にアクセスするためのログイン情報を入力し、​[Login (ログイン)]​ をクリックします。

  5. [Allow (許可)]​ をクリックします。

  6. 次の表に示すように、関連付けられた URL を入力してフローを開始します。

    Flow URL 注意事項

    ワークシートを追加する

    http://localhost:8081/create?workbookID={workbookID}&worksheetName={worksheetName}

    ワークシートをリストする

    http://localhost:8081/list?workbookID={workbookID}

    ワークシートを更新する

    http://localhost:8081/update?workbookID={workbookID}&worksheetName={worksheetName}&worksheetUpdateName={worksheetUpdateName}

    ワークシートを削除する

    http://localhost:8081/delete?workbookID={workbookID}&worksheetName={worksheetName}

例の XML

この XML コードをプロジェクトの ​[Configuration XML (設定 XML)]​ タブに貼り付けて、前のセクションで説明したフローを試してください。このコードを貼り付けたら、​[Regenerate 'doc:id' Values (「doc:id」値を再生成)]​ ダイアログで ​[Yes (はい)]​ をクリックします。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:excel="http://www.mulesoft.org/schema/mule/excel"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/excel http://www.mulesoft.org/schema/mule/excel/current/mule-excel.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="b67a7f0e-9d8f-43ee-b3d8-0a2f86fe10c5" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<excel:authorization-code-config name="Microsoft_Excel_Online_Authorization_Code_Config" doc:name="Microsoft Excel Online Authorization Code Config" doc:id="a03ea31c-ab5c-4508-ae87-91485d0d9201" >
		<excel:oauth-authorization-code-connection >
			<excel:oauth-authorization-code consumerKey="${consumerKey}" consumerSecret="${consumerSecret}" authorizationUrl="${authorizationUrl}" accessTokenUrl="${accessTokenUrl}" scopes="${scopes}" resourceOwnerId="${resourceOwnerId}"/>
			<excel:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="/callback" authorizePath="/authorize" externalCallbackUrl="http://localhost:8081/callback" />
		</excel:oauth-authorization-code-connection>
	</excel:authorization-code-config>
	<configuration-properties doc:name="Configuration properties" doc:id="2820ecc1-e8be-4b5f-8d6e-5eb3afaf1732" file="mule-app.properties" />
	<flow name="create-flow" doc:id="fcdaa88d-173a-4213-aaef-65bdcf384f03" >
		<http:listener doc:name="Listener" doc:id="f6a51e00-2be8-4524-9e39-cd4e3387b5e0" config-ref="HTTP_Listener_config" path="/create"/>
		<ee:transform doc:name="Transform Message" doc:id="f277839a-9e59-4d2a-9d53-c4d2f012ae90" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	workbookId: attributes.queryParams.workbookID,
	worsheetname: attributes.queryParams.worksheetName
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<excel:add-worksheet doc:name="Add worksheet" doc:id="071f5319-16ae-43dc-9420-bf47479eb3d1" config-ref="Microsoft_Excel_Online_Authorization_Code_Config" workbookId="#[payload.workbookId]" worksheetName="#[payload.worsheetname]"/>
		<logger level="INFO" doc:name="Logger" doc:id="9dd54e43-357e-454d-94ff-ccace4bcb580" message="Worksheet ID : #[payload.id]"/>
	</flow>
	<flow name="list-flow" doc:id="5b1b8836-f3a2-445e-b495-c80d93dcd82d" >
		<http:listener doc:name="Listener" doc:id="0ffa794c-37a4-4c57-a14d-da7009fa504f" config-ref="HTTP_Listener_config" path="/list" />
		<ee:transform doc:name="Transform Message" doc:id="f71f89a7-0f51-44ba-9e46-18e6f8dcc8c8" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	workbookId: attributes.queryParams.workbookID
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<excel:list-worksheet doc:name="List worksheet" doc:id="5e576012-f3a1-428a-b20f-d9d5a3442398" config-ref="Microsoft_Excel_Online_Authorization_Code_Config" workbookId="#[payload.workbookId]"/>
	</flow>
	<flow name="update-flow" doc:id="0cfe6bad-85e8-4e61-9688-52c6b37a93a8" >
		<http:listener doc:name="Listener" doc:id="6c874287-c011-4b19-b3e8-55744003f0f6" config-ref="HTTP_Listener_config" path="/update"/>
		<ee:transform doc:name="Transform Message" doc:id="d0697ad3-e842-48cd-b0c4-016dd65a712e" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
		name : attributes.queryParams.worksheetUpdateName
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<excel:update-worksheet doc:name="Update worksheet" doc:id="983a65bc-584b-4199-867d-abfb9cf09bcb" config-ref="Microsoft_Excel_Online_Authorization_Code_Config" workbookId="#[attributes.queryParams.workbookID]" worksheetId="#[attributes.queryParams.worksheetName]">
		</excel:update-worksheet>
	</flow>
	<flow name="delete-flow" doc:id="c989f49f-809c-4593-95dc-f93f8634c609" >
		<http:listener doc:name="Listener" doc:id="f6e8d004-e264-48c1-85cf-b2ce5a0135d6" config-ref="HTTP_Listener_config" path="/delete"/>
		<ee:transform doc:name="Transform Message" doc:id="ea4da82b-cd40-4bf6-b8c7-04efe280d835" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	workbookId: attributes.queryParams.workbookID,
	worksheetName: attributes.queryParams.worksheetName
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<excel:delete-worksheet doc:name="Delete worksheet" doc:id="183fb53f-0c3d-42c2-8676-df485f9a5f43" config-ref="Microsoft_Excel_Online_Authorization_Code_Config" workbookId="#[payload.workbookId]" worksheetId="#[payload.worksheetName]"/>
	</flow>
</mule>