Google表格/ AppScript - 将数据从一个工作表复制到另一个工作表

时间:2016-09-13 20:19:28

标签: google-apps-script google-sheets

我想在我的工作表中创建一个按钮,在完成后,将一个工作表(每日实验室订单)中的“自定义项目”复制(或剪切和粘贴)到成品工作表的最后一行(2016年完工)。然后,我希望它删除包含“自定义项”的行。从逻辑上讲,我以为我会选择行,单击按钮,然后对每个完成的“自定义项目”反复执行此操作。

我遇到的障碍是脚本只复制单元格A1。它不会复制第一行中的任何其他值,也不会复制第1行下面的任何值.A1被冻结,它正在使用函数NOW()来不断更新时间。

以下是我的脚本。请帮忙吗?谢谢。*

*脚本的行删除部分尚未编写。

function myFunction() {

 var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID

 var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name
 var SRange = source.getActiveRange(); //assign the range you want to copy
 var SData = SRange.getValues();

 var target = ss.getSheetByName('Finished 2016'); //replace with destination Sheet tab name
 var last_row = target.getLastRow();
 var target_range = target.getRange("A"+(last_row+1)+":G"+(last_row+1))
 target.getRange(target.getLastRow()+1, 1, SData.length, SData[0].length).setValues(SData);


}

1 个答案:

答案 0 :(得分:0)

当你使用时:
var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8');
你是开放的 在电子表格中,当您打开电子表格时,activeRange始终为A1 所以,你的脚本正常运作 如果在电子表格中写入了该函数,例如,如果您从menu button触发该函数,则可以使用openById更改getActive

var ss = SpreadsheetApp.getActive();
var source = ss.getActiveSheet();
var SRange = source.getActiveRange();

这里activeRange反映用户选择,如果您想要检索所有工作表内容,那么您应该更改:

 var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID
 var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name
 var SRange = source.getDataRange();

getDataRange获取所有工作表内容。