スプレッドシートで任意のシートをアクティブにしようとすると、手動で実行したときとトリガーで時間主導型で実行した時の挙動が異なります。
手動では問題なく任意のシートがアクティブになりますが、トリガーではアクティブになりません。手動実行もトリガーもシートのアクティブの状態だけが異なるだけで、両方ともA1には成功の文字が入力され、ステータスも完了になっております。
トリガーで実行した場合におきましても、4行目のコードでシート1のコピーという名前のシートをアクティブにしたいです。
原因がわかる方おられましたらご教示お願いいたします。
Typescript
1function myFunction1() { 2 var spreadsheet = SpreadsheetApp.getActive(); 3 spreadsheet.getRange('A1').setValue('成功'); 4 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('シート1 のコピー'), true); 5 spreadsheet.getRange('A1').setValue('成功'); 6};
エディタの場合は開いているスプレッドシートが対象になっていて
トリガーで起動したときは、別で開いて処理しているとかじゃないですかね?
だから、別で開いているもののアクティブは変化しないという感じに思えます。
コメントありがとうございます。
どうしたらアクティブにすることができますでしょうか?
何がしたいのでしょうか?
4行目のコードでシート1のコピーという名前のシートをアクティブにしたいです。
このスプレッドシートを開いたときにシート1のコピーという名前のシートをアクティブにしたいのですか?
もしスプレッドシートを開いたときにアクティブにしたいという目的であれば起動時のトリガーにすればいいでしょう(実行まで少し間がありますが)
結局何が目的なのか分かれば時間でのトリガー以外に何かしらの方法があるかもしれません。
PDFを作成しています。その時にメインのシートを非表示にしていますが、作成後表示させ、そのシートをアクティブにしたいです。
https://teratail.com/questions/286482
申し訳ありませんがその説明でも何がしたいのかが私には理解できません。
一つ言えるのは時間でのトリガーでは不可能です。
どのみち変更できたとしても、その時にスプレッドシートを閉じていたら意味がありません。
手動でそのシートをアクティブにしても閉じたら次に開いたときには最初のシートがアクティブになりますし
開いて編集しているときにトリガーが動作してアクティブシートが勝手に切り替わるというのも変です。
どうも私にはこれ以上協力できなさそうです。
ご連絡ありがとうございます。
スプレッドシートは開いていることを前提で問題ございません。
また、手動で編集することもありません。