前提・実現したいこと
Google form, Google spread sheetを使って以下を満たす仕組みを実現したいです。
・スプレッドシートは、フォームからの入力と直接入力の両方ができる
フォームから入力されたシート①を、シート②で呼び出し、補足情報を追記できる
・日次バッチ程度より短スパンで最新のデータをソートすることができ、1行の関係は維持できる
(毎日数回、新しいレコードがformから入力される。リアルタイムでソートされてもよい)
なお、フォームから入力されたシートを別シートから=QUERY(,,)で呼び出し、
追記する方法で既に運用が開始しており、上記の前提は崩さずに解決したいです。
発生している問題
GSSの基本機能でソートしてもうまくいかない
・シート①をソートすると、シート②で追記した内容が連動せず、所望の結果にならない
・シート②をソートすると、呼び出し部分が先祖返りし、所望の結果にならない
(QUERY関数で再読み込みしてしまい、シート①の順番に戻ってしまう)
以下のようなGASを作成してみたが、呼び出し部分が先祖返りし、所望の結果にならない
function sort() { // 問い合わせ回答のスプレッドシートへの参照を取得する var sheets = SpreadsheetApp.getActiveSpreadsheet(); // ソートをかける対象のシートを取得する(indexは左側のシートから0) var sheet = sheets.getSheets()[1] // sort({ソートをかける列の指定}, {true: 昇順, false: 降順}) sheet.sort(2, false) }
補足情報(FW/ツールのバージョンなど)
見ていただくのが一番早いかと思い、サンプルのスプレッドシートを以下に用意しています。
https://docs.google.com/spreadsheets/d/1HJ9bvV-DR2OxAjrVVjc08rYua7HLVTmNQ1MvOAOEF7k/edit?usp=sharing
アウトプットイメージとしては、このシートで
「データ」→「フィルタを表示」→「新しい一時的なフィルタビューを作成」→B列でソート
を行った状態です。この状態を常に最新化したいです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー