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] );
}
}
}
}