将行从一个工作表复制到另一个工

时间:2016-04-05 14:15:21

标签: google-apps-script google-sheets

我需要为我们的经理创建一个主表,其中只包含他们所在地区的活动(我有一个脚本可以满足我的需要)。这些工作表从我的主工作表中填充(并且不在同一工作簿中)。

当有新的提交时,我需要将行复制到适用的工作表。我的代码将它们全部转储到一张纸上,我不知道为什么。我假设我没有合适的条件,但是你怎么说"当这个经理"?我认为按行调用工作表ID就足够了,但我猜不是。

那么我是否必须为每位经理做一个if else声明?由于我有大约80名经理,这将变得乏味。

以下是我目前的代码。任何帮助或建议表示赞赏!

function moveRows(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Form Responses 1");
  var data = sh.getDataRange().getValues();

    // Grab the Headers
  var headers = sh.getRange(1,1,1,sh.getLastColumn()).getValues();
  var nameCol = headers[0].indexOf('Enter Your Name');
  var candCol = headers[0].indexOf('Choose Candidate');
  var typeCol = headers[0].indexOf('Merged Experience');
  var docCol = headers[0].indexOf('Document Link');
  var timeCol = headers[0].indexOf('Timestamp');
  var subjectCol = headers[0].indexOf('Choose the Content Area');
  var ratingsCol = headers[0].indexOf('Ratings Summary');
  var accessCol = headers[0].indexOf('Access');
  var activityCol = headers[0].indexOf('Copied to Activity Sheet');
  var masterCol = headers[0].indexOf('Master Activity Sheet');
  var target = [];

  // Loop over the values line by line
  for (var i = 0; i < data.length; i++) {
  var row = data[i];
  var name = row[nameCol];
  var activity = row[activityCol];
  var master = row[masterCol];
  var candidate = row[candCol];
  var type = row[typeCol];
  var subject = row[subjectCol];
  var ratings = row[ratingsCol];
  var access = row[accessCol];
  var guide = row[docCol];
  var time = row[timeCol];

  if (activity == "") { // if condition is true copy the whole row to target
   target.push([time,name,candidate,subject,type,guide,ratings]);
   Logger.log(target);


  var ss2 = SpreadsheetApp.openById(master);
    var sh2 = ss2.getSheetByName("Sheet1");
        sh2.getDataRange().offset(sh2.getLastRow(), 0, target.length, target[0].length).setValues(target);
  } 
 }
}

注意:我有一堆不同的脚本可以将行从一个标签页移动到另一个标签页,但我无法找到将其移动到多个工作簿中的任何内容。

1 个答案:

答案 0 :(得分:0)

您可以做的是为每个管理器创建一个数组,用于复制数据的工作表。

var managerSheet = {
"manager1":"SheetAzerty",
"manager2":"SheetQwerty"
};

选择工作表:

var manager = "manager1"; //This is the value you retrieve

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(managerSheet[manager]);

斯特凡