javascript - Google Apps 脚本将特定范围从任何选项卡复制到主工作表
问题描述
所以本质上,我想创建一个脚本,从一张纸上的特定范围内获取数据,并将其推送到主纸上,或者我称之为“永久”。每天都会创建新选项卡,并且在出现提示时,这些新选项卡上的指定范围也需要推送。当我尝试使用该脚本时,每个人都可以工作,除了在“永久”页面上粘贴数据时,这些行分开粘贴了许多行,而不是粘贴在最后一个空行中。我对编码非常陌生,并且肯定需要一些关于我搞砸的地方的指示。
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Push to Perpetual')
.addItem('Push to Perpetual', 'Macro')
.addToUi();
}
function Macro() {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Extraction Log Perpetual")
var s2 = SpreadsheetApp.getActiveSheet()
var a=s.getLastRow()+1
s2.getRange(3, 21, 5, 13).copyTo(s.getRange(a,1),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
};
解决方案
如果数据在实际行中粘贴了很多行,则意味着该工作表中还有其他内容导致 getLastRow() 跳到最后。您可以做的是从 A 列获取最后一行。
var a=s.getRange("A:A").getValues().filter(function(item){return item != ""}).length+1;
扩展 您从 A 列获取所有值,然后过滤掉没有任何值的单元格。然后得到数组的长度,加1这样就可以得到下一行了。
推荐阅读
- c# - 是否可以在 c# Nunit 框架中使用 TestCaseSource 和 ValueSource 属性?
- google-cloud-dataflow - 启动 Dataflow SQL 作业时无法启动 VM 错误
- typescript - 在打字稿中创建 UTC 日期
- node.js - 在 javascript/nodejs 应用程序中使用 aws congito 的最佳方法是什么?
- reactjs - 如何根据附加音频文件的结尾确定音频文件的激活时间?
- java - Keycloak - 无法启动嵌入式服务器:WFLYEMB0022:无法在嵌入式进程上调用“start”:参数“abstractPath”不能为空
- powershell - Powershell ADUser 命令未与 AD 同步
- android - 在 Android Studio/Gradle 插件中支持 protobuf "import public"
- eclipse-plugin - IBM Liberty 开发人员工具未出现在 Eclipse 中
- c# - 如何解决带有移动对象的四叉树的内存问题?