Power Query でパラメータを使用する

Power Query でパラメータを使用する

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]])

プライバシー レベルが有効になっている場合は、プライバシー レベルのプロンプトが表示されます。適切なプライバシー レベル (この場合は組織レベルの両方) を割り当てるか、[オプション] ダイアログでプライバシー レベルを無効にするかを選択できます。

関連情報