GASでの自分用メモ(シート間を比較して正しかったらコピペ)

自分用のメモ

二つのスプレッドシートがあったとして、AシートのA行の値と、BシートのA行の値を比較します。もし、BシートのA行の値の中に、AシートのA行の値と被るものが合った場合、AシートのB行の値を、BシートのA行コピペします。パラメーターを変えるだけで、どうにでもできるようにしただけです。

実装

 

var Polygon = function(copyFromSheetId, setToSheetId, copyFromSheetNum, setToSheetNum, copyFromRow, setToRow, copyFromRowValue,setToRowValue)
{
      this.copyFromSheetId = copyFromSheetId;
      this.setToSheetId = setToSheetId ;
      this.copyFromSheetNum = copyFromSheetNum;
      this.setToSheetNum = setToSheetNum;
      this.copyFromRow = copyFromRow;
      this.setToRow = setToRow;
       this.copyFromRowValue = copyFromRowValue;
      this.setToRowValue = setToRowValue;
      this.logDimension = function()
      {

      var copyFromArray = {};
      var setToArray = {};

      var copyFromSpreadsheetId = SpreadsheetApp.openById(this.copyFromSheetId);
      var setToSpreadsheetId = SpreadsheetApp.openById(this.setToSheetId);

      var copyFromSheetNum = copyFromSpreadsheetId.getSheets()[this.copyFromSheetNum];
      var setFromSheetNum = setToSpreadsheetId.getSheets()[this.setToSheetNum];

      var copyFromSheetLastRow = copyFromSheetNum.getLastRow();
      var setFromSheetLastRow =  setFromSheetNum.getLastRow();  

      for(var i = 1; i <= copyFromSheetLastRow; i++) 
      {
          if(copyFromSheetNum.getRange(i, 1).getValues() != "")
          {    
              copyFromArray[
              copyFromSheetNum.getRange(i, this.copyFromRow).getValues()
              ] = copyFromSheetNum.getRange(i, this.copyFromRowValue).getValues();
          }
      }

      for(var i = 1; i <= setFromSheetLastRow; i++) 
      {
          for (var key in copyFromArray) 
          { 

             Logger.log(    setFromSheetNum.getRange(i,  this.setToRowValue).getValues()      );


              if(    String(key) === String(setFromSheetNum.getRange(i,  this.setToRow).getValues()))
              {
                Logger.log("正解");
                Logger.log(      copyFromArray[key] );
                setFromSheetNum.getRange(i, this.setToRowValue).setValue( copyFromArray[key] );
              }
          }
      } 
    }
};

function testPoly()
{
      var poly1 = new Polygon
      (
        '17FNDl3iKQHusFI6K3IFmjUibsuhgN3CRbSnGUQnqK14', //copyFromSheetId
        '1DtH6QACaBynUJrrAG9qvP3CqYohX6px7rpDIh3m7Vi4', //setToSheetId
        1, //copyFromSheetNum
        1, //setToSheetNum;
        1, //copyFromRow;
        1, //setToRow
        1, // copyFromRowValue;
        3 // setFromRowValue;
      );
      poly1.logDimension();
}

//      Logger.log("copyFromSheetId");
//      Logger.log(this.copyFromSheetId);
//      Logger.log("setToSheetId");
//      Logger.log(this.setToSheetId);
//      Logger.log("copyFromSheetNum");
//      Logger.log(this.copyFromSheetNum);
//      Logger.log("setToSheetNum");
//      Logger.log(this.setToSheetNum);
//      Logger.log("copyFromRow");
//      Logger.log(this.copyFromRow);
//      Logger.log("setToRow");
//      Logger.log(this.setToRow);
//      Logger.log("copyFromRowValue");
//      Logger.log(this.copyFromRowValue);
//      Logger.log("setToRowValue");
//      Logger.log(this.setToRowValue);

 

ここら辺の本を読んで、めっちゃ勉強になりました、ブログって簡単にわかるけど、深い部分で基礎が結構抜け落ちてたりするんだよね… 基礎の徹底は、良いエンジニアの基本なので、ここら辺を横着するか否かで将来のエンジニア人生も大きく変わる。なので、こういう本はしっかり読もうと思います。(お勧めなので、是非読んでみればいいと思います :))

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事