javascript - 如何从未知大小的数组中选择一个范围?
问题描述
我想做一个宏来检索另一张表中的数据,但我事先不知道行数,我想恢复行数。数据表每天或每月都有不同的行数,因此我无法提前定义行数。
我尝试使用函数“GetRange”,但没有关于非空单元格的数量来获取非空行的数量。
我也尝试过创建过滤器,但我没有在文档中写入的权限。
function myFunction() {
// Get the sheet with DATA active
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('DataSheet'), true);
//how can i get the Range of the last non empty cells ??
var range = spreadsheet.getRange("A2:Axxx");
//i want to have an integer (number of lines with data)
var values = range.getValue();
// after i do somes operations in these data but it's not important.
for(var i=2 ; i< values ; i++) {
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName('Lettre Relance' + i);
spreadsheet.getRange('C12').activate();
spreadsheet.getCurrentCell().setFormula('=Relance!A'+i);
}
}
非常感谢您的回复!
解决方案
我通常使用简单邮件合并教程中的代码将整个工作表的数据读入对象。您还可以使用Faster 方式中的代码查找第一个空行线程以获取第一个空行,然后将范围设置为该行之前的所有内容。我使用来自@Mogsdad 响应的代码,我在此处复制了该代码:
/**
* Mogsdad's "whole row" checker.
*/
function getFirstEmptyRowWholeRow() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
var row = 0;
for (var row=0; row<values.length; row++) {
if (!values[row].join("")) break;
}
return (row+1);
}
推荐阅读
- c# - 如何根据注入上下文自定义注入实例?
- apache - 为什么这个 .htaccess 规则会阻止所有人?
- html - 为什么下拉菜单的宽度与我的折叠导航栏的链接不相似
- zxing - ZXing二维码扫描动画
- ruby-on-rails - 如何检测用gorm更改的一列
- asp.net-core - 如何在 ASP .NET Core Web API 中调用 SQL 查询
- python - 读取大型 csv 文件时设置 dtypes 的问题
- omnet++ - 错误:语法错误,意外名称,在 OMNET++ 中期望 $end?
- python - 如何计算csv文件中每天的条目?
- python - 不同参数的Python烧瓶蓝图注册路线