![Power Query でパラメータを使用する](https://rvso.com/image/1520081/Power%20Query%20%E3%81%A7%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B.png)
Power Query をパラメーター化する方法を教えてください。
私は、Web サービスに特定のデータを照会し、それを適切な方法で操作する PowerQuery クエリを作成しました。今日のタスクについてタスク管理システムに照会するとします。クエリは次のようになります。
Web.Contents("http://intranet/tasks?assignee=John", [Content=Text.ToBinary("")]),
問題なく動作しますが、このクエリを含むワークブックを同僚と共有して、同僚が自分のタスクに使用できるようにしたいと考えています。
Web.Contents("http://intranet/tasks?assignee={INPUT HERE}", [Content=Text.ToBinary("")]),
理想的には、どこかに「担当者」というパラメータが必要です(たとえば、ワークブックのセル内)。このワークブックのユーザーが、クエリの対象となる担当者(たとえば、Peter)を入力できるようにして、データを更新すると、クエリが次のようにパラメータを使用するようにします。
Web.Contents("http://intranet/tasks?assignee=Peter", [Content=Text.ToBinary("")]),
PowerQuery エディターを開いてクエリ コードを編集するのは望ましくありません。ユーザーはそれを実行するのを恐れ、おそらく間違いを犯してしまうからです。担当者を選択するためのワークブック内のセルが最も使いやすい方法だと思います。
これは可能ですか? もし可能であれば、どのようにすればいいですか?
ありがとう
答え1
私はインターネットでこの解決策を見つけました。まさに私が探していたものでした。
新しいクエリを作成し、詳細エディターを開いて次のコードを貼り付けます。
let GetValue=(rangeName) =>
let
name = Excel.CurrentWorkbook(){[Name=rangeName]}[Content],
value = name{0}[Column1]
in
value
in GetValue
保存すると、次のように別のクエリで使用できるクエリ関数が作成されます。
GetValue("Password")
これは、ワークブック内で「パスワード」という範囲を検索し、その範囲内の最初のセルの値を取得します。
答え2
レコードを使用してパラメータを渡すことができますQuery
。セルの値が前のステップで保存されている場合はName
、数式バーの fx ボタンを使用して新しいステップを追加し、次の数式を追加できます。
= Web.Contents("http://intranet/tasks", [Content=Text.ToBinary(""), Query=[assignee = Name]])
プライバシー レベルが有効になっている場合は、プライバシー レベルのプロンプトが表示されます。適切なプライバシー レベル (この場合は組織レベルの両方) を割り当てるか、[オプション] ダイアログでプライバシー レベルを無効にするかを選択できます。