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

応用

GAS応用の一覧

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

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

前回

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


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

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

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

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

 

ご質問

日付列のあるデータベースで、例えば日付が本日以前の行データを別シート(隣のシート)に移動させる(元のデータベース側の対象データ行は消す)という場合、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】チェックボックスを含む行データを移動する方法
  • Javascriptで先月のデータか否かの判別方法がわかります。
  • チェックボックスのデータを移動させる方法がわかります。
  • GAS応用の一覧

    コメント

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