0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS】sheet.clearContentsは排除した方が無難

Posted at

はじめに

こんにちは、ユーゴです。
相変わらず、簡単な社内システムは、GASで作っています。スプシをDBとして使えて、簡単なWebページや、APIとしても機能する。これらが全部無料で使えるのは、奇跡ですね。
そんなGASですが、いくつ弱点や、コードの実行順で訳のわからない挙動をすることがあります。今回は、踏み抜いた1つの謎挙動について紹介します。

再現

日付を含む、簡単なシートを用意する。
clearcontents_bug_00.png

フィルターをかける。
clearcontents_bug_01.png

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);
}

ラベルは適用されたが、日付が適用されない。
clearcontents_bug_02.png

ちなみに、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, 量子コンピューティングなど、幅広い技術についてを紹介していきます。
お役に立てましたら、いいね・フォローなどよろしくお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?