【GAS】最下部を取得し別シートのデータをコピペする方法

応用

GAS応用の一覧

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

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

前回

【GAS】2次元配列からGoogleカレンダーに登録する
  • GASで2次元配列の使い方がわかります。
  • 関数に引数を渡す方法がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


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

    • GASでコピペする方法がわかります。
    • 今日の日付の挿入方法がわかります。
    • 最下部の位置を取得する方法がわかります。

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

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

     

    ご質問

     

     

    動画はこちら

    スクリプトはこちら

    function CopyTitleOnLast() {
      
      const ss = SpreadsheetApp.getActiveSpreadsheet()
      const shSource = ss.getSheetByName("タイトル")
      const lclm = shSource.getLastColumn()
    
      const sdata = shSource.getRange(1,1,2,lclm)  //コピー元のデータ
    
      const shDest = ss.getSheetByName("日報")
      let lRow = shDest.getLastRow()
    
      console.log(lRow)
    
      // console.log( sh_day.getRange(21,1).getDisplayValue())
    
    
      //A列をすべて取得する
      const dataA = shDest.getRange(1,1,lRow,1).getValues()
    
      console.log(dataA)
    
      //最下行から入力されている行を取得する
      let insertRow = 0
    
    
      console.log("A1はdataA[0][0]→",dataA[lRow-1][0])
    
      for(i=lRow-1;i>=0;i--){
        if(dataA[i][0] != ""){
          insertRow = i+1+2   //0オリジンのため+1、さらに2行下なので+2する
          console.log(i)
          break
        }
      }
          console.log(insertRow)
    
      //タイトル行のコピー
      sdata.copyTo(shDest.getRange(insertRow,1))
    
      //today()に今日の日付を上書きする
      shDest.getRange(insertRow+1,1).setValue(new Date())
    
    }

    最下部は、最下行からループさせることで取得できます。

    ただし、バッファ内のインデックスは0から始まるので
    注意が必要です。

     

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

    つぎはこちら

    【GAS】GoogleドキュメントにGスプレッドシートのデータを差し込む
  • Googleドキュメントの定型文にスプレッドシートのデータを差し込むことができます。
  • Googleドライブにおけるファイルのコピー方法がわかります。
  • 質問対応の一覧

    GAS応用の一覧

    コメント

    1. MATT より:

      この度はありがとうございました。

      最下行からループさせるとはすごいですね!
      絶対に思いつかないですし、ネットにもいくら探しても出てこないですね。
      さすがです!

      今日出勤してタイトルが作成されていて感動しました!

      本当にありがとうございます。

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