根据条件

时间:2017-11-17 19:56:54

标签: google-apps-script google-sheets

我有一个名为主列表的谷歌电子表格。它包含两张表'响应'和主回应'。响应表包含大约3000行数据和“响应”中的第一列数据。表被称为'回应?&#39 ;.我想从“回复”中复制一行'表单'主回应'如果“回复”表单?'列的值为“#39;在其中以及每次在“回复”中创建新条目时表格中应将适当的数据行复制到“主要响应”表中。片。我目前正在使用以下代码,但行已从“响应”中移出。表格而不是复制。我想要一个脚本,其中行被复制到'主响应'表格也应该留在'响应'片。 提前谢谢。

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

1 个答案:

答案 0 :(得分: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);