0
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?

More than 3 years have passed since last update.

App MakerAdvent Calendar 2019

Day 23

UserPickerで楽にユーザー選択を実装する

Last updated at Posted at 2019-12-22

どうもこんばんは、みかんです。

!!!!とつぜんですがたいせつなおしらせ!!!!

2020年1月27日
App Maker の提供終了に向けた対応のご案内
https://support.google.com/a/answer/9682494?p=am_announcement&visit_id=637157414793613981-426262357&rd=1

??!???!?!?!???!?

残念ながら2021年1月19日には終了してしまうそうです(涙)
移行先はAppSheetかApp EngineかGoogleフォームだそうです・・・

消すのは忍びないので記事は残して置きますが、何かの間違いじゃ無い限り役に立つことはないでしょう・・・

!!!!おしらせはおわりです!!!!!

今回は「UserPickerで楽にユーザー選択を実装する」方法を書いてみます。
下記ステップでやっていきます。

  • 1 下準備
  • 2 User Pickerの配置
  • 3 動きの確認
  • 4 valueIsRecordとは?

1 下準備

ちょうどいいサンプルは無いので、「Blank Application」で見ていきます。

ap01.png

準備らしき準備はこれだけですね。。

2 User Pickerの配置

ap02.png

さっそくUser Pickerを配置してみようと思います。これをドラッグアンドドロップすると・・?

ap03.png

「このウィジェットを使うにはディレクトリモデルが必須です。作っていいですか?」
と問われています。

ap04.png

CREATEを押して見るとこのような感じに。確かにDATAのところにDirectoryモデルが作成されています。
このUserPickerはG Suiteのユーザーから候補を出してくれるウィジェットになるわけですが、その候補データはきっちりDirectoryモデルにて取得するような仕組みになっているというわけですね。

で、このままだと見づらいので色々追加で配置してみます。

ap05.png

こんな感じになりました。「ユーザー選択」と書いてあるところがUserPickerです。

3 動きの確認

とりあえずPreviewしてみましょう。

gif001-compressor.gif

それぞれ、メールアドレスを最後まで打ち込まなくても、候補に表示されたカードをクリックすることで、入力値が反映されています。
基本的にはこれだけです。選択された時どのような情報を取れるかというバリエーションがありますので、次で解説します。

4 valueIsRecordとは?

UserPickerのプロパティを確認すると、valueIsRecordというものがあることがわかります。

ap06.png

ちょっとピンと来ない設定名ですが、名前の通り「値がレコードか否か」という設定になります。値はメールアドレスの文字列で、レコードはディレクトリモデルのレコードです。

ap07.png

上のカードのUserPickerはこれをオフにしているので、「値」が取れる状態です。それを「Email」テキストボックスからバインディングで参照しています。なので、ユーザーを選択するとそのままメールアドレスが入ります。

一方、下のカードのUserPickerはこれをオンにしているので、「レコード」が取れる状態です。ただ、なぜだかわかりませんがvalueプロパティには文字列(アドレス)が入っていて、ただレコード型なので素直にテキストボックスにはバインディングできませんでした。

ではどのようにレコードの値を参照するのかというと、イベントを利用します。

ap08.png

onValueChangeはユーザーを選択したタイミングで呼び出されます。
他にも2つ似たようなイベントがあり、それぞれ下記の通り呼び出されます。
onValueEdit: 入力後フォーカスが外れた時
onInputChange: 入力する度

onValueChangeのnewValueには、ディレクトリモデルのレコードが入っています。メールアドレス以外にも、フルネームやサムネールのURLなどが手に入ります。ここでは画像ウィジェットも用意して、urlプロパティに入れてみたりしました。

基本的にはメールアドレスで事足りるとは思いますが、アプリのUIとしてユーザーの画像も入れ込みたいなと言う時は是非valueIsRecordをオンにして使ってみましょう!

以上です。良いApp Makerライフを!

0
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
0
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?