質問: SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('sheet1'), true); spreadsheet.getRange('A2:D11').activate().sort({column: 1, ascending: true}); }; ### エラー(フォームから作成したスクリプトの場合) TypeError: null のメソッド「setActiveSheet」を呼び出せません。(行 3、ファイル「コード」) なお、スプレッドシートは、上記の昇順ソートの他に降順ソートもできるようにするため 昇順および降順(4行目のtrueをfalse)の2つのスクリプトを作成し、フォームをトリガーにして 実行できるようにしたいと思っています。 そこで、このスプレッドシートにリンクする2つのフォームを作成し、昇順用のフォームを 送信したときは昇順用のスクリプトが実行され、降順用のフォームを送信したときは降順用の スクリプトが実行されるようにしたいと考えています。 スプレッドシートからスクリプトエディタを開き、昇順および降順の2つのスクリプトを作成し、 そしてトリガーの設定でフォームをトリガーとした場合(イベントのソースはスプレッドシート)、 フォームを送信すると昇順および降順の2つのスクリプトとも実行されてしまうため目的を果たしません。 そこで、2つのフォームを作成し、フォームからスクリプトエディタを開き(イベントのソースはフォーム)、 1つのフォームには昇順もしくは降順の1つのスクリプトのみを仕込んでおけば送信するフォームに応じて 昇順ソートもしくは降順ソートできるのではないかと考えているのですが、上記のエラーが 発生してしまい解決策を探しています。
回答: getActiveではなく、openByIdをすればよいのでは?