ホーム

GASでシートAからシートBへ値をコピー


コメントないし、長くてごメソ

やりたいこと

コピー元のシートのA行と、コピー先のA行を比較する、そして同じ値を探す。コピー元のシートのA行の、どこかしらの値が、コピー先のA行のどこかしらの行の中にあればtrueとする。コピー元のシートのB行の値を、コピー先の一致したb行へ追加する。下記の画像を見てもらえれば早い。

注意点

コピー元のシート、コピー先のシート、いずれもシートのIDを指定している。また、下記のスクリプトを使用する際は、getSheetsやgetRange関数を使うときの、指定位置を示す番号の取り扱いに注意しよう。

実装

var hashColor2 = {};

function ring() 
{  
  var sheet = SpreadsheetApp.openById('17FNDl3iKQHusFI6K3IFmjUibsuhgN3CRbSnGUQnqK14');
  var sheet_To = sheet.getSheets()[0];
  var lastRow = sheet_To.getLastRow();

  for(var i = 1; i <= lastRow; i++) 
  {
      if(sheet_To.getRange(i, 1).getValues() != "")
      {   
        hashColor2[sheet_To.getRange(i, 1).getValues()] = sheet_To.getRange(i, 2).getValues();
      }
  }

until1(hashColor2);
}

function until1(arrayname)
{
    var ss_copyTo = SpreadsheetApp.openById('1DtH6QACaBynUJrrAG9qvP3CqYohX6px7rpDIh3m7Vi4');
    var sheet_copyTo = ss_copyTo.getSheets()[0];
    var lastRow = sheet_copyTo.getLastRow();
    for(var i = 1; i <= lastRow; i++) 
    {
        //コピー元の連想配列分だけループ
        for (var key in hashColor2) 
        { 
            if(    String(key) === String(sheet_copyTo.getRange(i, 1).getValues())    )
            {
              sheet_copyTo.getRange(i, 2).setValue( hashColor2[key] );
            }
        }
    }
}

 

コピー元のシート

コピー先のシート

 

整形前の実装

var hashColor2 = {};
/*
*
*
*
*1個目の関数
*
*
*/
function ring() 
{  
  var sheet = SpreadsheetApp.openById('17FNDl3iKQHusFI6K3IFmjUibsuhgN3CRbSnGUQnqK14');
  ///コピー先のスプレットシートの中のシート名
  var sheet_To = sheet.getSheets()[0];
  var lastRow = sheet_To.getLastRow();
  // 配列の初期化
  for(var i = 1; i <= lastRow; i++) 
  {
      if(sheet_To.getRange(i, 1).getValues() != "")
      {   
        //配列のkeyに対し値を設定する
        hashColor2[sheet_To.getRange(i, 1).getValues()] = sheet_To.getRange(i, 2).getValues();
//        Logger.log("配列のキー");
//        Logger.log(sheet_To.getRange(i, 1).getValues());
//        Logger.log("配列の値");
//        Logger.log(sheet_To.getRange(i, 2).getValues());
      }
  }

//作った連想排列
Logger.log(hashColor2);
//作った連想排列を関数の引数へ渡す
until1(hashColor2);
}
/*
*
*
*
*2個目の関数
*
*
*/
function until1(arrayname)
{
    //コピー先
    var ss_copyTo = SpreadsheetApp.openById('1DtH6QACaBynUJrrAG9qvP3CqYohX6px7rpDIh3m7Vi4');
    ///コピー先のスプレットシートの中のシート名
    var sheet_copyTo = ss_copyTo.getSheets()[0];
    ///コピー先のスプレットシートの最後の行を取得する
    var lastRow = sheet_copyTo.getLastRow();
    //コピー先のシートの行の分だけループする
    for(var i = 1; i <= lastRow; i++) 
    {
        //コピー元の連想配列分だけループ
        for (var key in hashColor2) 
        { 
//            Logger.log(      String(key)                                                                           );
            Logger.log(      String(sheet_copyTo.getRange(i, 1).getValues())    );

            if(    String(key) === String(sheet_copyTo.getRange(i, 1).getValues())    )
            {

              Logger.log("正解");
//              Logger.log(     sheet_copyTo.getRange(i, 2).getValues()    )
//              sheet_copyTo.getRange(i, 1).setValue(hashColor2[key]);
              sheet_copyTo.getRange(i, 2).setValue( hashColor2[key] );
            }
        }
    }
}

 

Pocket
LinkedIn にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-ホーム

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.