使用脚本将数据添加到另一个电子表格中。

时间:2016-08-25 03:43:48

标签: google-apps-script

我遍历行并获取某个单元格的值,如下所示:

for (var i = 2; i < lastRow; i++) {
    if (sheet.getRange(i, getColIndexByName("Department Concerned")).getValue() == "HR") {
      // Do some stuff
    }
  }

我将数据复制到另一张纸上,如下所示:

// select the Spreadsheets
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var target = SpreadsheetApp.openById("Spreadsheet ID");

  // select the Sheets from the Spreadsheets
  var source_sheet = ss.getSheetByName("Logs");
  var target_sheet = target.getSheetByName("Sheet3");

  // select the range from the Sheets
  var source_range = source_sheet.getRange("A2:J500");
  var target_range = target_sheet.getRange("A2:J500");

  // get the values from the source sheet
  var values = source_range.getValues();

  // set the values to the destination sheet
  target_range.setValues(values);

我需要的是复制该数据并将其添加到另一个电子表格的相同范围内,具体取决于我刚刚在我的&#34; for循环&#34;中使用的单元格值。 谢谢。

1 个答案:

答案 0 :(得分:2)

您认为正确,但需要找到更好的方法。

  • 从源表中选择值
  • 检查Department Concerned
  • 的每一行,"HR"
  • 选择符合上述条件的行
  • 将其粘贴到目标表中

我把这些情景合并为一个,

function myFunction() 
{
 // select the Spreadsheets
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var target = SpreadsheetApp.openById("Spreadsheet ID");

 // select the Sheets from the Spreadsheets
 var source_sheet = ss.getSheetByName("Logs");
 var target_sheet = target.getSheetByName("Sheet3");

 // select the range from the Sheets
 var source_range = source_sheet.getRange("A2:J500");

 // get the values from the source sheet
 var values = source_range.getValues();

 // an array for selected rows
 var selectedRows = []; 

 for(var row in values)
 {
  // thinking 5th column is Department Concerned
  if(values[row][4] =='HR')
  {
    //add add entire row to selected 2d array 
    selectedRows.push(values[row]); 
  }
 }
 // set the values to the destination sheet
 target_sheet.getRange(2, 1, selectedRows.length,10).setValues(selectedRows);  
}