Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从表中检索行(具有特定值)并将特定行插入新工作表_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 从表中检索行(具有特定值)并将特定行插入新工作表

Google apps script 从表中检索行(具有特定值)并将特定行插入新工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我是新来的,不知道该怎么办。情况就是这样 1) 我有一个表,其中有3列,其中一列有一个类别值 2) 我正在编写一个脚本,从表中选择范围并在特定列中查找该值 3) 如果该行具有我要查找的值,我希望复制表的整行并将其粘贴到新的电子表格上 函数myFunction(){ var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”) var范围=sheet.getRange('B1:B35') var destinati

我是新来的,不知道该怎么办。情况就是这样

1) 我有一个表,其中有3列,其中一列有一个类别值

2) 我正在编写一个脚本,从表中选择范围并在特定列中查找该值

3) 如果该行具有我要查找的值,我希望复制表的整行并将其粘贴到新的电子表格上

函数myFunction(){

var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”)

var范围=sheet.getRange('B1:B35')

var destination=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet3”)

var verduras='verduras'

var rule=SpreadsheetApp.newDataValidation().requireTextEqualTo('Category').copy()

range.setDataValidation(规则); range.CopyValueStorRange(目标,1,2,1,2)

}

解决方案:

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TableWithInformation");
  var columnToSearch = 2; // B column 
  var lastrow = sheet.getLastRow();
  Logger.log(sheet.getLastRow());
  var range =sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
  var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report");
  var values = range.getValues();

  //Destination  
  var numberOfColumns = 3;
  var numberOfRows = 1 ;
  var startColumn = 1;
  var startRow = 2;

  // equivalent to destination.getRange('A1:C3');     
  var count = 0
  var destRow = destination.getLastRow()+1
  for(var i=0;i<values.length;i++){
    Logger.log("i is now: " +i);
    Logger.log("Current row value: " +values[i][0]) 

    if(values[i][0] == 'Category'){
      Logger.log("*** Value found in cloumn: " +values[i][0] +"**** \n Count: " +i);
      count++;

      var rangeToCopy = sheet.getRange((i+1), 1,numberOfRows,numberOfColumns);

      var destinationRange = destination.getRange(destRow, startColumn,numberOfRows,numberOfColumns);
      destRow++;
      Logger.log("Next Destination row: " + destRow);
      rangeToCopy.copyTo(destinationRange);


    }
  }

}
函数myFunction(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“TableWithInformation”);
var columnToSearch=2;//B列
var lastrow=sheet.getLastRow();
Logger.log(sheet.getLastRow());
var range=sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
var destination=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“报告”);
var values=range.getValues();
//目的地
var numberOfColumns=3;
var numberOfRows=1;
var startColumn=1;
var startRow=2;
//相当于destination.getRange('A1:C3');
变量计数=0
var destRow=destination.getLastRow()+1

对于(var i=0;i我并没有真正理解您试图通过数据验证规则实现的目标

我将使用一个循环并搜索您要查找的值。如果在该范围内找到该值,则复制该范围内的一个或多个值

下面是一个示例,如果需要,您需要修改它以复制整行。这将只复制B列中的值

编辑:

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var columnToSearch = 2; // B column 

  Logger.log(sheet.getLastRow());
  var range =sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
  var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");
  var values = range.getValues();

  //Destination  
  var numberOfColumns = 3;
  var numberOfRows = 1 ;
  var startColumn = 1;
  var startRow = 1;
                         // equivalent to destination.getRange('A1:C3');     
  var destinationRange= destination.getRange(startRow, startColumn,numberOfRows,numberOfColumns); 
  var count = 0;
  for(var i=0;i<values.length;i++){
    Logger.log("i is now: " +i);
    Logger.log("Current row value: " +values[i][0]) 
    if(values[i][0] == 'Category'){
      Logger.log("*** Value found in cloumn: " +values[i][0] +"**** \n Count: " +i);
      count++;
      var rangeToCopy = sheet.getRange(i, 1,numberOfRows,numberOfColumns);
      rangeToCopy.copyTo(destinationRange);
    }
  }

}
函数myFunction(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
var columnToSearch=2;//B列
Logger.log(sheet.getLastRow());
var range=sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
var destination=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet3”);
var values=range.getValues();
//目的地
var numberOfColumns=3;
var numberOfRows=1;
var startColumn=1;
var startRow=1;
//相当于destination.getRange('A1:C3');
var destinationRange=destination.getRange(startRow、startColumn、numberOfRows、numberOfColumns);
var计数=0;

对于(var i=0;i请尝试以下方法:

function myFunction() {
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getDataRange().getValues();
for(var i = 0, len = values.length; i < len; i++){
if(values[i][1] == 'Category'){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3").appendRow(values[i]); 
}
}
}
函数myFunction(){
var values=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”).getDataRange().getValues();
对于(变量i=0,len=values.length;i
谢谢你的回答@kyuzo,我添加了你建议的代码,但仍有一些问题。我已编辑了上面的问题。再次感谢你。感谢@kyuzo的帮助,我对其进行了一些调整,但效果不错。