【GAS】チェックボックスを含む行データを移動する方法

応用

GAS応用の一覧

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

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

前回

【GAS】1行のデータを別シートにコピーし行を削除する方法
  • GAS(JavaScript)での日付の比較方法がわかります。
  • 行の削除やデータのコピーする方法がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


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

    • Javascriptで先月のデータか否かの判別方法がわかります。
    • チェックボックスのデータを移動させる方法がわかります。

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

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

    いただいた質問

    動画を見ながらシート移動はできたのですが、元セルに「チェックボックス」が入っていた場合、移動したセルには「FALSE」となってしまいます。
    そのままコピーするにはどうしたらよいでしょうか?ヒントなるようなお助けをいただけたら幸いです。

    前回のロジックの場合、チェックボックスは「TRUE」or「FALSE」に置き換わってしまいます。
    それを回避するには、
    ・予めその列をチェックボックスに指定しておく
    あるいは、
    ・insertCheckboxes() でチェックボックスを指定します。

    動画はこちら

    シートはこちら

    *クリックすることでシートが開きます。(コピーしてお使いください)

    スクリプト

    function movelog() {
      const STROW = 7 //移送元開始行
      const DATACLM = 28   //データのカラム数
      const ssh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("稟議情報一覧(マスタ)")
      const dsh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("稟議情報アーカイブ")
    
    
      const today = new Date()
    
    
      const mfast_date = new Date(today.getFullYear(), today.getMonth(), 1); //今月の1日を作成
    
    
      console.log("fast_date=", mfast_date)
    
    
      //1.今月の始まりを取得する これより小さければ先月
      //2.先月までのデータを移動させる
      //3.チェックボックスを設定する
    
    
      const lrow = ssh.getLastRow()
      console.log(lrow)
    
    
      let dtrow = dsh.getLastRow() + 1 //転送先開始行
    
    
      for (i = lrow; i >= STROW; i--) {
        const vals = ssh.getRange(i, 1, 1, DATACLM).getValues()
    
    
        if (mfast_date > vals[0][3]) {
          console.log(i, "先月以前の行")
          dsh.getRange(dtrow, 1).insertCheckboxes()
          dsh.getRange(dtrow++, 1, 1, DATACLM).setValues(vals)
          ssh.deleteRow(i)
        }
      }
    }

     

    ポイント

    月末の判別方法

    月の終わり(月の末日)を取得するのは、微妙にメンドイのでその月の1日を取得します。
    const mfast_date = new Date(today.getFullYear(), today.getMonth(), 1); //今月の1日を作成

    後のは、その日付より小さければ先月までのデータを言うことになります。

    if (mfast_date > vals[0][3])

     

    チェックボックスの設定

    チェックボックスを設定するには、insertCheckboxes()を使用します。

    今回の場合は、1列目固定なので、

    dsh.getRange(dtrow, 1).insertCheckboxes()

    としています。

     

     

     

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

    つぎはこちら

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

    コメント

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