スプレッドシートをGASで操作しています。
最終的にやりたいこととしては、日付ごとに作成されたシートを日付順に並べ替えたいと思っています。
①テンプレートのシートをコピー
②シート名を日付に変更(日付は任意に指定)
上記を以下のコードで実現しています。
var template = ss.getSheetByName('テンプレ');
SpreadsheetApp.setActiveSheet(template);
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(day_str);
duplicateActiveSheet()はコピー先のシートをアクティブにするはずなので、この後
var target = SpreadsheetApp.getActiveSheet();
として、当該シート『target』を操作しています。(想定通り操作できています。)
そこで、以下の様にシートを移動して日付順に並べようとしたものの、移動されるのはコピー前のActiveSheetである『テンプレ』のシートとなってしまいます。
ss.moveActiveSheet(target_id)
つまり、コピー後にgetActiveSheet()を行うとコピー先のシートが取得されるにも関わらず
moveActiveSheet()を行うと、コピー元のシートがアクティブと判断されるのか、コピー元のシートが移動します。
この様は挙動をとる原因がお分かりになれば、ご教示頂きたいです。
ちなみに、関係があるかわかりませんが、以下のコードでシートを取得できないという現象も発生しています。
(仕方なくduplicateActiveSheet()を行った場合と行わなかった場合で条件分岐を行っています。)
var template = ss.getSheetByName('テンプレ');
SpreadsheetApp.setActiveSheet(template);
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(day_str);
var target = SpreadsheetApp.getActiveSheet();
var a = target.getSheetName();
//day_strの値(シート名)がきちんと表示されます
var target = ss.getSheetByName(day_str);
//しかし、これだとシートを取得できません
どうぞよろしくお願い致します。