はじめに
こんにちは、ユーゴです。
相変わらず、簡単な社内システムは、GASで作っています。スプシをDBとして使えて、簡単なWebページや、APIとしても機能する。これらが全部無料で使えるのは、奇跡ですね。
そんなGASですが、いくつ弱点や、コードの実行順で訳のわからない挙動をすることがあります。今回は、踏み抜いた1つの謎挙動について紹介します。
再現
GASで以下のようにコードを組む。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
const values = sheet.getDataRange().getValues();
sheet.clearContents();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
ちなみに、C列以降に関係ない文字を入れても、それらは入ります。繰り返しますが、日付列だけです。
対処法
そもそもコードが冗長ですが、sheet.clearContentsは使わないのが無難でしょう。
以下で直ります。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
const values = sheet.getDataRange().getValues();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
終わりに
いかがだったでしょうか。
今回は、GASでsheet.clearContents()の挙動がおかしい現象について紹介しました。
このように、GASの紹介から、Unity, AWS, 量子コンピューティングなど、幅広い技術についてを紹介していきます。
お役に立てましたら、いいね・フォローなどよろしくお願いします!


