次の方法で共有


方法: コード アプリをデータに接続する (プレビュー)

コード アプリを使用すると、Power Platform コネクタに接続できます。

プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能は、お客様が早期にアクセスしてフィードバックを提供できるように、公式リリースの前に利用できます。

次の手順に従います。

  1. Power Apps で接続を作成して設定する
  2. コード アプリへの接続を追加する
  3. 接続を呼び出すアプリを更新する

pac code init を使用してアプリを初期化した後、次の手順を使用します。 「方法: コード アプリを最初から作成する」の「コード アプリを初期化する」セクションまでの手順を参照してください。

Important

SQL、SharePoint、Office 365 Users、Office 365 グループ、Azure Data Explorer、職場または学校向け OneDrive、Power Apps for Maker、Microsoft Teams、MSN Weather、Microsoft Translator V2 の各コネクタが正式にサポートされています。 Dataverse の作成、読み取り、更新、削除の各操作 が正式にサポートされています。 他のコネクタは動作することが期待されますが、テストされていません。

Power Apps で接続を作成して設定する

まず 、Power Apps で接続を作成して構成します。 後の手順で使用するために、そこから接続メタデータをコピーします。

Important

最初のリリースでは、 Power Apps で既存の接続を使用するようにコード アプリのみを構成できます。 PAC CLI コマンドを使用して新しい接続を作成することはできません。 新しい接続の作成のサポートは、今後のリリースで追加される予定です。

Power Apps の [接続] ページを起動する

Power Apps に移動し、左側のナビゲーションから [接続] ページに移動します。

[新しい接続] ボタンが表示されている Power Apps の [接続] ページ

Office 365 ユーザー接続の作成例

[ + 新しい接続 ] を選択し、[ Office 365 ユーザー] を選択します。 を選択してを作成します。

Office 365 ユーザー接続が既にある場合は、新しい接続を作成する代わりに使用できます。

Power Apps で Office 365 Users 接続を作成する

(省略可能)SQL 接続 (または別の表形式データ ソースの接続) を作成する

ヒント

コード アプリを Azure SQL に接続するための詳細なガイドについては、「 方法: コード アプリを Azure SQL に接続する」を参照してください。

作成されたすべての接続の接続メタデータを取得する

これを行うには、次の 2 つの方法があります。

  • PAC CLI pac 接続リスト コマンドを使用します。
  • Power Apps の URL からデータを取得します。

PAC CLI を使用する

Power Apps CLI を使用して、利用可能な接続を一覧表示し、 pac 接続リスト コマンドを使用して ID を取得できます。

pac connection listには、データ ソースを追加するときにとして使用される接続 IDappIdなど、すべての接続のテーブルが表示されます。

接続 ID と API 名を示す PAC CLI の一覧の出力

Power Apps を使用する

接続の詳細を調べるときに URL を表示することで、Power Apps を使用してこの情報を取得することもできます。

Power Apps で接続を選択して詳細を表示する

URL に API 名と接続 ID がどのように追加されるかに注目してください。

API 名と接続 ID の値を示す接続の詳細

API 名と接続 ID を PAC CLI から各接続の URL にコピーします。

コード アプリへの接続を追加する

使用する既存の接続を作成または特定し、前の手順の接続メタデータをコピーしたら、それらの接続をアプリに追加します。

データ ソースをアプリに追加すると、型指定された TypeScript モデルとサービス ファイルがリポジトリに自動的に生成されます。 たとえば、Office 365 Users データ ソースでは、 Office365UsersModelOffice365UsersServiceが生成されます。

  1. PAC CLI pac コード add-data-source コマンドを使用して、表形式以外のデータ ソース (Office 365 ユーザーなど) をアプリに追加します。

    コマンド ラインから、次のコマンドを実行します。 前の手順で収集した API 名と接続 ID を使用します。

    pac code add-data-source -a <apiName> -c <connectionId>
    

    例えば次が挙げられます。

    pac code add-data-source -a "shared_office365users" -c "aaaaaaaa000011112222bbbbbbbbbbbb"
    
  2. (省略可能)表形式のデータ ソース (SQL や SharePoint など) をアプリに追加します。

    同じ PAC CLI pac コード add-data-source コマンドを使用しますが、テーブル ID とデータセット名を含めます。 表形式データ ソースのスキーマでは、これらの値を指定します。 これらがまだない場合は、「 データセット名とテーブル ID を取得する」を参照してください。

    pac code add-data-source -a <apiName> -c <connectionId> -t <tableId> -d <datasetName> 
    

    例えば次が挙げられます。

    pac code add-data-source `
    -a "shared_sql" `
    -c "aaaaaaaa000011112222bbbbbbbbbbbb" `
    -t "[dbo].[MobileDeviceInventory]" `
    -d "paconnectivitysql0425.database.windows.net,paruntimedb"
    
    pac code add-data-source `
    -a "shared_sql" `
    -c "aaaaaaaa000011112222bbbbbbbbbbbb" `
    -t "[dbo].[EmployeeInformation]" `
    -d "paconnectivitysql0425.database.windows.net,paruntimedb" 
    
  3. (省略可能)SQL ストアド プロシージャをデータ ソースとして追加します。

    コマンド ラインから、次のコマンドを実行します。 前に収集した API 名と接続 ID を使用します。

    pac code add-data-source -a <apiId> -c <connectionId> -d <dataSourceName> -sp <storedProcedureName> 
    

    例えば次が挙げられます。

    pac code add-data-source `
    –a "shared_sql" `
    -c "33dd33ddee44ff55aa6677bb77bb77bb" `
    -d "paconnectivitysql0425.database.windows.net,paruntimedb" `
    -sp "[dbo].[GetRecordById]" 
    
  4. (省略可能)必要に応じて、追加後にデータ ソースを削除できます。

    コマンド ラインから、次のコマンドを実行します。 前に収集した API 名と接続 ID を使用します。

    pac code delete-data-source -a <apiName> -ds <dataSourceName> 
    

    例えば次が挙げられます。

    pac code delete-data-source `
    -a "shared_sql" `
    -ds "MobileDeviceInventory" 
    

    Important

    接続のスキーマが変更された場合、型指定されたモデルとサービス ファイルを更新するコマンドはありません。 データ ソースを削除し、代わりに読み取った。

接続を呼び出すアプリを更新する

接続が追加されたら、生成されたモデルとサービスを使用するようにアプリを更新できます。

これらの変更は、IDE のエージェントを使用して行うこともできます。 たとえば、Visual Studio Code では、GitHub Copilot エージェント モードを使用して、データ ソースが追加された後でそれらを作成できます。

  1. データ呼び出しの前に Power Apps SDK の初期化を確認する

    App.tsx ファイルで、Power Apps SDK が完全に初期化されるのを待ってからデータ操作を実行するロジックを実装します。 これにより、初期化されていないサービスまたはコンテキストが見つからない場合に発生するエラーが回避されます。 これは 1 回だけ行う必要があります。

    API 呼び出しを行う前に、非同期関数または状態管理を使用して初期化を確認します。 例えば次が挙げられます。

    useEffect(() => {
    // Define an async function to initialize the Power Apps SDK
    const init = async () => {
          try {
                await initialize(); // Wait for SDK initialization
                setIsInitialized(true); // Mark the app as ready for data operations
          } catch (err) {
                setError('Failed to initialize Power Apps SDK'); // Handle initialization errors
                setLoading(false); // Stop any loading indicators
          }
    };
    
    init(); // Call the initialization function when the component mounts
    }, []);
    
    useEffect(() => {
    // Prevent data operations until the SDK is fully initialized
    if (!isInitialized) return;
    
    // Place your data reading logic here
    }, []);
    
  2. 必要な型とサービスをインポートする

    データ ソースを追加すると、モデル ファイルとサービス ファイルが自動的に生成され、 /generated/services/ フォルダーに配置されます。 たとえば、 Office365Users をデータ ソースとして追加すると、次のファイルが作成されます。

    • Office365UsersModel.tsOffice365Users コネクタ内の要求オブジェクトと応答オブジェクトのデータ モデルを定義します。

    • Office365UsersService.tsOffice365Users データを操作するためのサービス メソッドを提供します。

    これらを次のようにコードにインポートして使用できます。

    import { Office365UsersService } from './generated/services/Office365UsersService';
    import type { User } from './generated/models/Office365UsersModel';
    
  3. 表形式以外のデータ ソースを使用するようにアプリを更新する (Office 365 ユーザーなど)

    生成されたファイルは、型指定された接続 API の src/generated/models and src/generated/services フォルダーの下に表示されます。

    await Office365UsersService.MyProfile() 
    
    const profile = (await Office365UsersService.MyProfile_V2("id,displayName,jobTitle,id,userPrincipalName")).data; 
       setUser(profile); 
       if (profile?.id || profile?.userPrincipalName) { 
          // Try both id and userPrincipalName for photo 
          let photoData = null; 
          try { 
          photoData = (await Office365UsersService.UserPhoto_V2(profile.id || profile.userPrincipalName)).data; 
          } catch { 
          // fallback to userPrincipalName if id fails 
          if (profile.userPrincipalName) { 
             photoData = (await Office365UsersService.UserPhoto_V2(profile.userPrincipalName)).data; 
          } 
          } 
          if (photoData) setPhoto(`data:image/jpeg;base64,${photoData}`); 
    
  4. (省略可能)表形式のデータ ソース (SQL など) を使用するようにアプリを更新する

    生成されたファイルは、型指定された接続 API の src/Models フォルダーと src/Services フォルダーの下に表示されます。

    Example

    await MobileDeviceInventoryService.create(<record>) 
    await MobileDeviceInventoryService.update(id, <record>) 
    await MobileDeviceInventoryService.delete(id) 
    await MobileDeviceInventoryService.get(id) 
    await MobileDeviceInventoryService.getall() 
    
    await MobileDeviceInventoryService.update(assetId, changedFields); 
    setAssets((prevAssets) => 
      prevAssets.map((asset) => { 
        if (asset.id === assetId) { 
    
  5. アプリをローカルで実行して変更を確認する

    npm run dev
    
  6. Power Apps で実行するようにアプリをプッシュする

    npm run build | pac code push
    

データセット名とテーブル ID を取得する

Important

データセット名とテーブル ID を取得する次の手順は、一時的な回避策です。 これらの値を取得するための簡単なメカニズムを追加する予定です。

テーブルとデータセットの名前がまだない場合は、キャンバス アプリを実行し、ブラウザーネットワークインスペクターから値をコピーすることで取得できます。

  1. Studio で新しいキャンバス アプリを作成します。

  2. キャンバス アプリへの接続を追加します。

  3. ギャラリー コントロールへの接続をバインドします。

  4. アプリを発行して実行します。

  5. ブラウザーの 開発者ツールを開き、[ ネットワーク ] タブに移動し、アプリの読み込み時に行われた要求を調べます。 "invoke" 要求を確認し、その応答に移動します。

  6. 接続 ID、データセット名、テーブル ID を含む Azure API Management (APIM) 要求を見つけて、それらの値をコピーします。

    APIM を介して次のデータ要求 URL の例を使用して、URL 内の次の場所で <Connection ID><Dataset name>、および <Table ID> の値を探します。

    https[]()://{id value}.01.common.azure-apihub.net/apim/sharepointonline/<Connection ID>/datasets/<Dataset name>/tables/<Table ID>/items