2017-11-17 9 views
0

マスターリストと呼ばれるGoogleスプレッドシートがあります。それは2つのシート「レスポンス」と「マスターレスポンス」を含んでいます。レスポンスシートには約3000行のデータがあり、「レスポンス」シートの最初の列は「レスポンス」と呼ばれます。私は '応答'シートの行を 'マスター応答'シートにコピーしたいと思います。カラムに 'called'という値があり、 'レスポンス'シートに新しいエントリが作成されるたびに、適切なデータ行が 'マスターレスポンス'シートにコピーされます。私は現在、次のコードを使用していますが、行は 'レスポンス'シートから移動され、コピーされません。私は、行が「マスターレスポンス」シートにコピーされ、「レスポンス」シートにも残るスクリプトを必要としていました。 ありがとうございます。条件に基づいてシート間でデータをコピーするスクリプト

function onEdit() 
{ 
var sheetNameToWatch = "Response"; 
var columnNumberToWatch = 1; 
var valueToWatch = "Called"; 
var sheetNameToMoveTheRowTo = "Master Response"; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var range = sheet.getActiveCell(); 
if (sheet.getName() == sheetNameToWatch && range.getColumn() == 
columnNumberToWatch && range.getValue() == valueToWatch) 
{ 
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); 
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
sheet.getRange(2, 1, sheet.getLastRow(), 
sheet.getLastColumn()).moveTo(targetRange); 
} 
} 

答えて

0

あなたは別のシートからデータをコピーするcopyToの代わりmoveToを使用する必要があります。

sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).copyTo(targetRange); 

異なるスプレッドシートにコピーします。

var ss = SpreadsheetApp.openById("<<SPREADSHEET ID>>").getSheetByName("Sheet1"); 
var newTargetRange = ss.getRange(ss.getLastRow() + 1, 1); 
sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).copyTo(newTargetRange); 
+0

こんにちは、ありがとうございます。このコードは、データをコピーする際に問題なく動作します。しかし、特定の行をコピーする代わりに、シート全体をコピーします。なぜこれが起こっているのか分かりません。 –

+0

範囲を変更する.... 'getRange(row、column、numRows、numColumns)' ...ここで 'sheet.getLastRow()'は最後の数値を返します – Ritz

+0

ありがとうございました。コードは正常に動作します。 IDで別のワークシートに行をコピーするコードを変更することは可能ですか?それで、結果を同じワークブックの別のシートと別のワークブックのシートにコピーしたいということです。私はそれを修正しようとしたが固執した。 –

関連する問題