Google 表格/AppScript - 将数据从一张表格复制到另一张表格

Posted

技术标签:

【中文标题】Google 表格/AppScript - 将数据从一张表格复制到另一张表格【英文标题】:Google Sheets/AppScript - Copying Data from one Sheet to Another 【发布时间】:2017-01-21 13:08:05 【问题描述】:

我想在我的工作表中创建一个按钮,在完成后将“自定义项目”从一张工作表(每日实验室订单)复制(或剪切和粘贴)到已完成工作表的最后一行(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);



【问题讨论】:

不清楚您是如何触发 myFunction 的。如果您从电子表格外部触发此操作,则 getActiveRange() 可能不会返回您在工作表的任何给定副本中选择的范围。你能澄清一下你是如何调用 myFunction() 的吗? 【参考方案1】:

当您使用时:var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); 你是开放的 在电子表格中,当您打开电子表格时,activeRange 始终为 A1。 因此,您的脚本运行正常。 如果函数是在电子表格中编写的,例如,如果您从 menu button 触发它,那么您可以更改 openByIdgetActive

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 获取所有工作表内容。

【讨论】:

以上是关于Google 表格/AppScript - 将数据从一张表格复制到另一张表格的主要内容,如果未能解决你的问题,请参考以下文章

未返回Google Appscript VALUE

Google Sheets AddOn - 通过服务帐户集成 AppScript 和 BigQuery

某些Google幻灯片AppScript是否已记录但不受支持?

为啥我不能从 Google AppScript for Sheets 的侧边栏中调用服务器函数? [复制]

为啥我不能从 Google AppScript for Sheets 的侧边栏中调用服务器函数? [复制]

将新的 Google 表格数据附加到 BigQuery 表中