コメントないし、長くてごメソ
やりたいこと
コピー元のシートの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] ); } } } }