Power Apps から GoogleDrive に画像を保存してみる

ごきげんよう、百合宮桜です。
Microsoft 365 にどっぷり漬かりすぎて、外部コネクタを試せていなかったので、久々に試してみました(*'▽')
今回は、Power Apps のアプリからGoogleDrive に画像を保存する時のパターンを紹介します。

アプリのイメージはこんな感じで、画像の追加コントロールで画像を指定して、ボタンを押したタイミングでGoogleDriveに画像が保存されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/c2874164-4d96-55b5-e38e-84267014b2b4.png)


保存方法は大きく分けて2パターンあります。
- Power Apps と Power Automate を連携する方法
- Power Apps オンリーで保存する方法

それぞれ見ていきましょう！



# Power Automate との連携
## フローの作成
Power Automate と連携する場合はフローを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/b5a1f77e-8d69-9d99-02ab-c8b8a244f844.png)

1. トリガーにはファイルコンテンツ（画像のことです）を入れる箱を用意してあげましょう
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/1673b5f8-30de-0da6-758f-ab5e2e364805.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/e2002e1e-351c-a6b2-3d46-9e9a88d0da96.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/7ff05ebf-4534-e2c5-3aee-2e24d3e21ec8.png)

2. GoogleDriveのアクションは「ファイルの作成」を利用します
    ファイル名とファイルコンテンツは、動的なコンテンツからトリガーで取得したものを指定しましょう。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/14961349-31fa-edbe-173a-b051a0f8f762.png)

これでフローは完成です。必ず保存してくださいね(*'▽')

## アプリからの連携処理
1. アプリにフローを追加します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/26a98b5e-fc15-e5b7-3ca3-e82baf8fc6b2.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/2957ffaa-caab-f238-1051-10801e3cfb25.png)


2. ボタンの OnSelect プロパティに以下の式を入力します

    ```
    フロー名.Run(
    //{}内がトリガーのファイルコンテンツに入力される
    {
        //現在時刻で画像の名前を指定
        name:Text(Now(),"yyyymmddhhmmss"),

        //画像のファイルコンテンツを指定
        contentBytes:UploadedImage1.Image
    }
    )
    ```

    フロー名.Run() は Power Automate のフローを実行する為の関数です。
    ()内にPower Apps → Power Automate へ受け渡す引数が入ります。
    ファイルを受け渡す時は{}内に name と ContentBytes が入っているのがルールです。

これで連携完了です。ボタンをクリックすれば、画像が GoogleDrive に保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/4e8802d4-fa5e-2a30-c370-be9b2e3893c3.png)

# Power Apps だけで画像を保存する方法

こちらはシンプルで、コネクタを追加し、ボタンの OnSelect プロパティに式を書くだけです。

1. データ > データの追加 から「GoogleDrive」を追加します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/939d4ca1-114d-fbfa-7246-b4496ba7b174.png)
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/5d16e0ac-74be-e2a2-426d-97281ae647cf.png)
 
2. ボタンの OnSelect プロパティに以下の式を入力します

    ```
    GoogleDrive.CreateFile(フォルダーのパス,ファイル名,ファイルコンテンツ)
    ```

    GoogleDrive.CreateFile() でGoogleDrive にファイルを作成するという指示になります。
    ()内には指定する引数を入れます。
    Microsoft Learn を確認すると、ファイルの作成に必要な引数は、フォルダーのパス・ファイル名・ファイルコンテンツの3つです。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/d83a00f2-aa8f-74d3-f689-01de18e5347a.png)
    
    https://learn.microsoft.com/ja-jp/connectors/googledrive/#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90

    フォルダーのパスとファイル名は文字列なので、直打ちの場合は"" で囲ってあげましょう。
    フォルダーの階層は / で表現できます。

    私はこんな感じで指定しました。
    
    ```
    GoogleDrive.CreateFile("/Test",Text(Now(),"yyyymmddhhmmss"),UploadedImage1.Image)
    ```

    
    以上で完了です。

# 終わりに
今回は GoogleDrive への画像の保存方法を紹介しました。
どちらが使いやすいかはヒトによって、要件によってそれぞれだと思います。
いざという時の為に引き出しは多く持っておきましょう♪