75才からのモバイルアプリ作成

MIT App Inventor 2 を使ったアプリ作成

MIT App Inventorで遊ぶ (New York Timesアプリ3)

2024-04-03 06:49:15 | 日記

リストより日付を選択できるようにした。

実行画面:

スクリーンのデザイン:

Spinnerで、年、月を選択できるようにした。(年は、1851年より2023年まで。月は、1月より12月)2024年までにしたいが、現状のままでは、若干問題が発生するので今回は省いた。

右側の「All Components」にはSpinnerが3つ設定してある。3番目のSpinnerは「日」を選択するものだが、とりあえずは非表示。理由は、選択年に応じ閏年時の調整、月に応じた調整などが必要なので。とりあえず、デフォルトとして1日から30日までを対象としているため、2月を選択すると、2月1日より2月30日のデータを取得しようとしてエラーとなる。次回以降の要修正事項。

         

プログラム(ブロック):

Spinnerで年と月を選択する部分のみ。

1. 変数と関数の設定

monthsList => 全ての月のリスト、yearsList => 全ての年のリスト

selectedYear => 選択された年を格納、selectedMonth => 選択された月を格納

関数 makeYearsList => 1851年より2023年までの「年」のリストを作成

関数 makeMonthsList => 1月より12月までの「月」のリストを作成

(procedureは、今後は「関数」と呼ぶことにした。適切な用語かどうかはわからないが)

2. Spinner1及びSpinner2に表示するデータを割り当てる

Spinner1 で選択されたデータ(年)を変数selectedYearに割り当てる。Spinner2で選択されたデータ(月)の場合、1桁であれば、0を付加し変数selectedMonthに割り当てる。(1 => 01)New York Times APIでは、この場合の日付は yyyy/MM/dd となっているので。

3. URLのパラメーター部分に日付を設定しGETリクエストを行う。

設定しているパラメーターについて:

begin_date(隠れているが)とend_dateで日付を設定。今回のように月単位だと1日から末日までを指定すれば良いみたいだ。当該1日を指定するときは、begin_date=20221003、end_date=20221003 と同じ日付を指定するのか、まだ不明。

fl=web_url, snippet,pub_date,headline... (取得するデータを指定)