【GAS】1行のデータを別シートにコピーし行を削除する方法

応用

GAS応用の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

  • GAS(JavaScript)での日付の比較方法がわかります。
  • 行の削除やデータのコピーする方法がわかります。

なので、サクッとマスターして

と答えてあげてください。

 

ご質問

日付列のあるデータベースで、例えば日付が本日以前の行データを別シート(隣のシート)に移動させる(元のデータベース側の対象データ行は消す)という場合、GASでは、どのようにコードを書けば良いのでしょうか?

 

動画はこちら

【GAS】 本日以前のデータを別シートに移動する方法 (行の削除)

シートはこちら

*クリックすることでシートが開きます。

スクリプト

function movelog() {
  const ssh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ログ")
  const dsh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("アーカイブ")


  let lssh = ssh.getLastRow()   //ソース最下行
  let ldsh = dsh.getLastRow() +1   //移送先最下行


  let today = new Date()
  today.setDate(today.getDate() + 1)


  //9行目以降
  for (let i = lssh; i >= 9; i--) {


    const vals = ssh.getRange(i, 1, 1, 8).getValues()


    if (today > vals[0][7]) {
      console.log("今日以前の行", i)


      //移送先最下行に挿入する
      dsh.getRange(ldsh++, 1, 1, 8).setValues(vals)


      //行の削除
      ssh.deleteRow(i)
    }
  }
}

 

ポイント

行を削除しながらデータをコピーしていくので、最下行から
チェックしていく必要があります。

for (let i = lssh; i >= 9; i--) {

 

「今日以前」という条件なのですが、new Date() だと時間も入るので
>= の比較ができないので 次の日より小さいという比較を行っています。

 

 

 

 

 

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS】プルダウンが変更された際に内容にしたがって処理する(onEdit)
  • GASで値を変更されたときに処理する方法がわかります。onEdit()
  • 値にしたがって処理を分ける方法がわかります。switch
  • GAS応用の一覧

    コメント

    タイトルとURLをコピーしました