ご訪問ありがとうございます。
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】チェックボックスを含む行データを移動する方法
コメント