質問: フォームでの初期値に前回入力した内容を設定したい お世話になっております。 日報提出アプリを作っているのですが、タイトルの通り前回入力した内容を初期値として設定することは可能でしょうか? 具体的に日報フォームには 1氏名 2今日作業した内容 3明日作業する内容 の入力項目があり、 本日の日報で 1鈴木 2打合せ 3 作業 と入力した場合、 明日の日報を入力する際には 1鈴木(手入力) 2 作業 (初期値) 3調査(手入力) と、昨日の3を、今日の2にが転記されていてほしいのです。 initial valueのexpressionで書けそうな気がするのですが、昨日の3の値を持ってくる方法が分からずうまくいきませんでした。 お手数ですが、どなたかご教授いただけないでしょうか。
回答: まず前提として、以下のようなスキーマとします。 テーブル名:日報 カラム:[id] , [氏名] , [今日作業した内容] , [明日作業する内容] 明日、昨日という日付の前後関係をtraceするためにはdateタイプのカラムがあることが必要ですが、このケースでは、例えば日報が必ずしも連続した日付では作成されない(ありえるケースとして、日報作成はworkdayのみ。金曜日の次は翌週の月曜日などの関係。また、国民の休日などで日付が連続しない場合も)ことを想定します。但し、例えばカラムに「日報作成日」というカラムを追加しても問題ありません。新規に日報を作成する際のロジックに日付のカラムを関係させず別のロジックで同一氏名で作成された前回の日報のrowを参照し、initial valueとして明日作業する内容を今日作業した内容のvalueとして引き出すロジックを組み込みます。 要点としては、[今日作業した内容]のinitial valueの設定、つまり関数の入力です。 any(select(日報[明日作業する内容],and([氏名]=[_thisrow].[氏名], [_rownumber]=max(select(日報[_rownumber],and([氏名]=[_thisrow].[氏名], [_rownumber]<[_thisrow].[_rownumber])))))) この関数では、新規に日報を作成の際、既に入力されている日報のうち、同じ氏名で、且つ一つ前の日報をスプレッドシートの行の番号をベースに前回作成されたものの日報のrow から明日作業する内容のカラムのvalueを計算する関数です。 ご覧の通り、dateのカラムを参照せず、実際に前回の日報作成日から間隔があいている(連続したdateではない)状態でも確実に前回作成の日報を参照し、valueを引っ張ってこれます。 お試し下さい。