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 触发它,那么您可以更改 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
获取所有工作表内容。
【讨论】:
以上是关于Google 表格/AppScript - 将数据从一张表格复制到另一张表格的主要内容,如果未能解决你的问题,请参考以下文章
Google Sheets AddOn - 通过服务帐户集成 AppScript 和 BigQuery
某些Google幻灯片AppScript是否已记录但不受支持?
为啥我不能从 Google AppScript for Sheets 的侧边栏中调用服务器函数? [复制]