我正在尝试创建一个Google脚本,根据单元格的值将一张Google表格中的行复制到不同的表格中。
单元格值是美国的州。主电子表格包含来自注册表单的数据,该表单始终被导入其中。当新注册发生(并且数据被导入主表)时,我希望脚本能够运行并将该行数据复制到适当的状态表中。
我在这里:
任何帮助将不胜感激。在谈到脚本时,我绝对是一个新手,这只会伤害我的头脑。
这是我到目前为止的代码:
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);
}
}
答案 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);
}
}