google-apps-script - 如何使用行、列表示法将值放入数组中
问题描述
这是我的脚本,当 getRange 采用 a1 表示法但在行列表示法中时,范围的最后一列被拉入第一列并且数组中没有其他数据。如果这是一个已知问题,您如何以编程方式表示“A6:M8”以包含行数。// 源代码行不起作用,我无法让它变得智能!
function Copy() {
var lp=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LP").activate();
var sourceRows = lp.getLastRow();
var source = lp.getRange('A6:M8').getValues();
// var source = lp.getRange(6, 13, (sourceRows-5), 13).getValues();
var tr= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TR').activate();
var trRows = tr.getLastRow();
//var trput = lp.getRange('A234:M236').setValues(source);
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};
解决方案
假设表格 LP 中的最后一行是第 8 行,那么您的计算(sourceRows-5)
应该没问题。(还假设您总是想一次复制 3 行。)
问题是您已输入13
该范围的起始列。相反,该行应为
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
另外两个建议:
- 您会获得两次活动电子表格。将它放入一个变量中,这样你就不需要这样做了。
var ss = SpreadsheetApp.getActiveSpreadsheet();
- 似乎没有必要
activate()
在单个工作表上进行调用,因此请考虑删除。
然后你会有这样的事情:
function Copy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var lp = ss.getSheetByName("LP");
var sourceRows = lp.getLastRow();
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
var tr= ss.getSheetByName("TR");
var trRows = tr.getLastRow();
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};
推荐阅读
- express - 为 ApolloServer 向上游服务发出的每个请求添加标头
- grafana - 时间序列图的 Grafana 自定义“时间”字段
- php - 困惑为什么 php 代码没有按预期工作。使用 if( x 和 y) {}
- java - 使用 Maven 动态加载类的 Jar 着色
- sql - Spark SQL 正则表达式提取日期、文件名和品牌
- python - Discord Currency Bot discord.py 需要帮助
- python - 自动实例化/加载多个消费者和生产者
- css - 如何在 razor pages 应用程序中安装和引用 bootstrap 版本 5
- node.js - 如何创建一个可以在群组中添加和删除用户的 Facebook Messenger 机器人
- android - 如何在片段android kotlin中保存RecyclerView状态