1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ExcelのPower Queryで、SAP API Business Hubにアクセスしてデータを取得する方法

Last updated at Posted at 2024-04-04

ExcelのPower Queryで、SAP API Business Hubにアクセスしてデータを取得する方法

手順

Power Queryのエディタを起動

リボンにあるデータの取得ボタンより空のクエリを作成する。ODataのクエリを作るためであるが、Power Queryの標準の方法では認証方法がうまくいかない。M言語を使うため、空のクエリから作成を行う。

[操作]
Excel → データ → データの取得 → その他のデータソース から → 空のクエリ

上記操作の結果、Power Queryのエディタが起動する。

APIキーをパラメータに設定

クエリ本体とAPIキーを分離して管理したい。APIキーをパラメータに設定し、クエリからパラメータを介してAPIキーにアクセスする。APIキー用にパラメータを新規に作る。

[操作]
リボン → パラメータの管理 → 新しいパラメータ → パラメータにAPIキーを設定 → 保存

パラメータ登録画面には、名前と現在の値を入力する。名前は変数名となり、現在の値には実際のAPIキーを入力する。

名前 現在の値
APIKey 実際のAPIキー

クエリの編集

クエリが空の状態なので、クエリをM言語で作成する。クエリは詳細エディタより編集できる。

[操作]
ナビゲーションペイン → クエリ1 (右クリック)→ 詳細エディタ → ソースコード(M言語) → 完了

編集前

letと、inが初期状態から存在する。letで変数に値を束縛し、inで用いる。以下は、変数ソースに、空文字列を束縛し、inによってクエリの結果を使う(が、空文字列なので結果は見えない)。

let
    ソース = ""
in
    ソース

編集後

空文字列の代わりに、OData.Feed関数を右辺に置く。3つ引数をとり、順にサービスURI serviceUri、ヘッダheaders、オプションoptions。オプションは省略可能なので、下記にはない。サービスURIにはSAP Business Accelerator HubのAPIのURLをダブルクオーテーションで囲む。ヘッダにはAPIキーを指定する。

ヘッダは、[]で囲む。ヘッダのKeyとValueをイコール = で結ぶ。[]の中にヘッダのKeyとValueを複数指定できる。複数指定する場合にはカンマ, で区切る。APIKey = APIKey の左辺はヘッダのKeyで、右辺はヘッダのValueで先ほど登録したパラメータ。

let
    ソース = OData.Feed("https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/API_OPLACCTGDOCITEMCUBE_SRV/A_OperationalAcctgDocItemCube?%24inlinecount=allpages&%24top=50", [APIKey = APIKey])

in
    ソース

[note]
リファレンスによると、OData.Feedの第3引数となるオプションにとることができるキーとして、ApiKeyNameがある。指定するとクエリ登録時にWeb API キーを認証情報として登録できる。この方法で登録したAPIキーは、URLに追加される。SAPのAPIではヘッダにAPIキーをセットするので、このApiKeyName使わない。

認証設定

認証は、「匿名」を用いる。ヘッダに認証情報を入れているので、他の認証情報は不要。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?