我想在我的工作表中创建一个按钮,在完成后,将一个工作表(每日实验室订单)中的“自定义项目”复制(或剪切和粘贴)到成品工作表的最后一行(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);
}
答案 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
获取所有工作表内容。