GASを使って文字列を検索して別のシートにコピー

スポンサードリンク

説明

わかりづらくてすみません。備忘録です。えーと、コピー元のA行ご覧くださいアルファベットが並んでいます。コピー元のC行に「値」から始まるアルファベットが並んでいます。

コピー先にはランダムに決めた行のどこかに「hahah」と「lalal」の文字があります。コピー元のA行を全部取得して、もし、コピー先のA行のどこかしらに、コピー元のA行の文字を見つけたら

その隣に、コピー元の値を挿入するというものです。聞くよりやって試した方が早いかもです。全部コード載せておきます。

スポンサードリンク

コピー元

スクリーンショット 2018-04-25 午後5.19.38.png

スポンサードリンク

コピー先

スクリーンショット 2018-04-25 午後5.19.51.png

スポンサードリンク

実装

var hashColor2 = {};

function myFunction() 
{   

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var lastRow = sheet.getLastRow();
    // 配列の初期化
     
      for(var i = 2; i <= lastRow; i++) 
      {
          if(sheet.getRange(i, 1).getValue() != "")
          {   
            // 配列のkeyに対し値を設定する
            hashColor2[sheet.getRange(i, 1).getValue()] = sheet.getRange(i, 3).getValue();
          }
      }

      //作った連想排列を関数の引数へ渡す
      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++) 
    {
        if(sheet_copyTo.getRange(i, 1, 1).getValue() != "")
        {      
              //Logger.log(sheet_copyTo.getRange(i, 1, 1).getValue());
              //コピー元の連想配列分だけループ
              for (var key in hashColor2) 
              {  
                 //もし、コピー元の値が、コピー先のどこかにあれば正解とする 
                  if(sheet_copyTo.getRange(i, 1, 1).getValue() === key)
                  {
                    Logger.log(key + "が正解:");
                    Logger.log( hashColor2[key] + "を隣に挿入したい:");
                    sheet_copyTo.getRange(i, 2, 1).setValue(hashColor2[key]);
                  }else{
                    Logger.log("外れ");
                  }
              }
        }
    }
}
スポンサードリンク

結果

スクリーンショット 2018-04-25 午後5.26.36.png