根据单元格

时间:2015-12-07 23:29:12

标签: google-apps-script google-sheets

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

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

我在这里:

  1. 获取主表
  2. 查找最后一行
  3. 在列"州"
  4. 中获取单元格的值
  5. 根据状态,将该行复制到50张不同的纸张中。
  6. 每次更新母版(通过API)时运行脚本。
  7. 任何帮助将不胜感激。在谈到脚本时,我绝对是一个新手,这只会伤害我的头脑。

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

    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 个答案:

答案 0 :(得分:2)

使用此代码:

// 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维数组,因此必须进行转换。因为您只获得一行数据,所以转换起来很容易。外部数组只有一个内部数组。一个内部数组具有该行的所有单元格值。

答案 1 :(得分:1)

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

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

}