将具有特定单元格的行复制到另一个电子表格

时间:2013-12-26 19:40:52

标签: google-apps-script

我一直在寻找一种方法从一行复制某些单元格并将它们粘贴到另一个电子表格中,但我似乎只能在一个电子表格中从一张纸到另一张表单或者处理代码的问题。超越我的头脑。我现在正在学习使用Google Spreadsheets进行编码,而我似乎无法做到正确。这是我现在的代码,我正在努力只复制一个单元格,然后在我可以做到这一点后,我将得到一个循环来遍历行并选择我想要复制的单元格。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var master = SpreadsheetApp.openById('0AgcCWQn-aoI1dFpLVE4tSENwcThrYnlMUzhuRmdWU2c');
var target = SpreadsheetApp.openById('0AgcCWQn-aoI1dF96X2dBT2dVVFZ2SU1NRWdYTDJhT2c');

var master_sheet = master.getSheetByName("Steve2");
var target_sheet = target.getSheetByName("Corbin1");

var master_range = master_sheet.getRange("A1");
var target_range = target_sheet.getRange("A1");

master_range.copyTo(target_range);

现在它给我一个错误,说它无法调用null的getRange方法。我不确定我是否正确使用OpenById,或者我是否可以在这种情况下使用它。

好的,我现在已经开始工作了。它完美地复制行,它只复制我想要的单元格。现在我需要帮助粘贴部分。它复制了所有内容并将其放入另一张表中,但我需要将其复制到下一个可用行和第一个可用列中。因此,如果第5行是最后一列数据,我需要将其粘贴到第6行并占用前6个左右的列。
这是我到目前为止所做的。

function menuItem1() {
var sss = SpreadsheetApp.openById('0AgcCWQn-aoI1dFpLVE4tSENwcThrYnlMUzhuRmdWU2c'); // sss = source spreadsheet Steve2
var ss = sss.getSheetByName('Sheet1'); // ss = source sheet

//Message box asking user to specify the row to be copied
var answer = Browser.inputBox('What row would you like to copy?');
var range = parseInt(answer);             

var array = [1,2,3,9,12,30];             

//Runs a loop to iterate through array, using array elements as column numbers
for(var i = 0; i < array.length; i++){
var SRange = ss.getRange(answer,1,1,array[i]);
//get A1 notation identifying the range
var A1Range = SRange.getA1Notation();
//get the data values in range
var SData = SRange.getValues();
}

var tss = SpreadsheetApp.openById('0AgcCWQn-aoI1dF96X2dBT2dVVFZ2SU1NRWdYTDJhT2c'); // tss = target spreadsheet Corbin1
var ts = tss.getSheetByName('Sheet1'); // ts = target sheet

//set the target range to the values of the source data
ts.getRange(A1Range).setValues(SData);

//Confirmation message that the row was copied 
Browser.msgBox('You have successfully copied Row: ' + answer);
}

1 个答案:

答案 0 :(得分:1)

您收到此错误可能是因为您的电子表格没有名为Steve2或Cobin1的工作表。尝试使用方法master.getSheets()[0],这样您将获得第一张不使用其名称的工作表。

您可以使用这段代码来检查工作表名称:

for(var x in master.getSheets()) {
   Logger.log(master.getSheets()[x].getSheetName());
}

最好的,