首页 文章

根据单元格中的值将行复制到新工作表

提问于
浏览
1

我正在尝试创建一个Google脚本,根据单元格的值将一个Google表格中的行复制到不同的表格中 .

单元格值是美国的州 . 主电子表格包含来自注册表单的数据,该表单始终被导入其中 . 当发生新的注册(并将数据导入主表)时,我希望脚本能够运行并将该行数据复制到适当的状态表中 .

这是我在的地方:

  • 获取主表

  • 找到最后一行

  • 获取列"state"中单元格的值

  • 根据状态,将该行复制到50个不同的工作表中 .

  • 每次更新主表单时(通过API)运行脚本 .

任何帮助,将不胜感激 . 在脚本编写方面,我绝对是一个新手,这只是伤害了我的头脑 .

这是我到目前为止的代码:

function myFunction() {

// Get Source Spreadsheet
var source = SpreadsheetApp.getActiveSpreadsheet();

// Get Source Sheet from Spreadsheet
var source_sheet = source.getActiveSheet();

// Get Active Range from Sheet
var lastRow = sheet.getLastRow();

// Get the Value of the State Cell
var cellValue = Range.getCell(lastrow,3);

// Copy Last Row to Appropriate State Sheet
if ( cellValue == 'Alaska') {
    var target = SpreadsheetApp.openById("");
    var target_sheet = target.getSheetByName("Sheet1");
    target_sheet.appendRow(lastRow);
}
}

2 回答

  • 1

    使用此代码:

    // Get Active Range from Sheet
    var lastRow = sheet.getLastRow();
    

    getLastRow() 方法返回一个整数 . 然后在代码中进一步向下,使用 lastRow 变量作为 appendrow() 的数据,这将无效;

    target_sheet.appendRow(lastRow);
    

    代码应该是这样的:

    var target = SpreadsheetApp.openById("");
    var target_sheet = target.getSheetByName("Sheet1");
    
    var lastRowOfData = source_sheet
      .getRange(source_sheet.getLastRow(), 1, 1, source_sheet.getLastColumn())
      .getValues();  //Returns a two dimensional array
    
    var oneD_Array = lastRowOfData.join().split(","); //Creates a one D array
    target_sheet.appendRow(oneD_Array);
    

    appendRow() 方法采用一维数组 . getValues() 方法返回一个2维数组,因此必须进行转换 . 因为您只获得一行数据,所以很容易转换 . 外部数组只有一个内部数组 . 一个内部数组具有该行的所有单元格值 .

  • 2

    以下是我为代码提出的答案:

    function myFunction() {
    
    // Get Source Spreadsheet
    var source = SpreadsheetApp.getActiveSpreadsheet();
    
    // Get Source Sheet from Spreadsheet
    var source_sheet = source.getActiveSheet();
    
    // Get Last Row
    var lastRow = source_sheet.getLastRow();
    
    // Get Last Column
    var lastColumn = source_sheet.getLastColumn();
    
    // Get Last Row of Data  
    var lastRowOfData = source_sheet.getRange(lastRow, 1, 1, lastColumn).getValues();
    
    // Creates a one dimensional array  
    var oneD_array = lastRowOfData.join().split(",");
    
    // Get the Value of the State Cell
    var cellValue = source_sheet.getRange(2,7).getValue();
    
    
    // Copy Last Row to Appropriate State Sheet
    if ( cellValue == "New York" ) {
        var target = SpreadsheetApp.openById("");
        var target_sheet = target.getSheetByName("Sheet1");
        target_sheet.appendRow(oneD_array);
    }
    

    }

相关问题