前提・実現したいこと
初めて質問させていただきます。
googleスプレッドシートにて一部自動化したく、以下の機能実現のためGASコードを書いております。
<目標>
sheet'今月'をコピーし、sheet'yy/MM'を作成。その後sheet'yy/MM'を左から4番目に移動。
なお、内容は丸丸コピーするが、書式ではなく値のみをコピー。
(毎月月初に1回という自動化をしたいのですが、こちらはトリガーで別途設定予定です。)
<困りごと>
当方、コード作成はど素人で初めて挑戦しました。いろいろな解説サイトを周遊しまくり、コピペでつなぎ合わせているのですが、
どうしても1つだけエラーが解消できません。
アドバイスいただける方いらっしゃいましたら、ご指導の程伏してお願い申し上げます。
コード校正途中で、コピー元であるsheet'今月'の書が式値に変わってしまう現象にも見舞われていました。
こちらはエラーというよりコード生成が問題な気がしております。
<コード>
function run() {
var book = SpreadsheetApp.getActiveSpreadsheet();
var tplSheet = book.getSheetByName("今月");
var target = tplSheet.copyTo(book);
var sheetName = generateSheetName();
if(tplSheet == null) {
return;
}→
if(book.getSheetByName(sheetName) == null) {
//テンプレ用シートを選択する
book.setActiveSheet(tplSheet);
//選択したシートを一左から4番目に移動
book.moveActiveSheet(4);
//さらに左から4番目にテンプレ用シートを元に作ったコピーを挿入
book.insertSheet(sheetName, 4, {template: tplSheet});
//数式を値に変換
SpreadsheetApp.flush();
tplSheet.copyTo(target, {contentsOnly:true});
}
}
function generateSheetName() {
var date = new Date();
return Utilities.formatDate(date, "GMO", "yy/MM");
}
発生している問題・エラーメッセージ
4行目のcopyToにエラーが出ます TypeError: Cannot read property 'copyTo' of null
該当のソースコード
GAS
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/19 07:18