for-loop - 循环通过过滤器并发送带有 PDF 的电子邮件的 Google Apps 脚本?
问题描述
我有一份问卷(20K 行)的数据,我需要与我们商店(400 家商店)的商店经理(报告)分享。我设法编写了一个脚本,将pdf
我的工作表发送到电子邮件地址列表。但我坚持为过滤器编写循环,因为我无法让setVisibleValues(values)
函数为FilterCriteriaBuilder
. 该setHiddenValues(values)
函数有效,但我不知道如何将它与循环结合起来。
请参阅下面的我当前的代码:
/**
* Filtersheet by location
*/
function FilterSheet() {
var spreadsheet = SpreadsheetApp.getActive().getSheetByName('Data')
spreadsheet.getRange('F1').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['Amsterdam, Rotterdam'])
.build();
spreadsheet.getFilter().setColumnFilterCriteria(6, criteria);
};
/**
* Send pdf of currentspreadsheet
*/
function SendPdf() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive().getSheetByName('Adres');
var blob = DriveApp.getFileById(ss.getId()).getAs("application/pdf");
blob.setName(ss.getName() + ".pdf");
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = spreadsheet.getRange(startRow, 1, numRows, 2);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = 'I hearby send you the overview of your data'
var subject = 'Overview of data';
MailApp.sendEmail(emailAddress, subject, message,{
attachments:[blob]});
}
}
解决方案
getValues()
返回所有范围单元格的值,无论它们是显示还是隐藏。
使用循环和isRowHiddenByFilter(rowPosition)来获取所有过滤后的值。您可以使用Array.prototype.push
将值添加到新数组或用于Array.prototype.splice
修改数组,保留返回的值getValues()
有关的
推荐阅读
- rust - 像 Netcat 一样的 Rust UDP 监听器
- python - 使用python进行网页抓取,request.json()显示status_code为200但无法提取json数据
- python - Python Django TypeError:“模块”对象不可调用
- python - 检查列表是否包含任何字典键
- excel - 在 Excel 中为 .txt 路径指定新文件夹
- mysql - mysql按优先级顺序获取记录,无需全文搜索
- react-native - 错误:找不到模块'source-map-support'
- html - 在 HTML 中显示 YAML(Trello 风格的卡片)
- javascript - 为什么当我单击取消按钮时它仍然调用表单事件处理程序?
- android - 如何在 Android Studio Java 中将 JSON 数组显示到表格视图或布局中