google-apps-script - 谷歌表格导出为 txt
问题描述
您好,我制作了这个脚本来将列中的数据导出到我的谷歌驱动器上的 .txt
function createOrAppendFile() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange('G3:G50');
var rows = range.getValues();
var fileName="test.txt";
var folderName="Videos";
var data = rows.splice(0);
var str = data.map(function(e) {return e.join()}).join("\n");
var content = str;
// get list of folders with matching name
var folderList = DriveApp.getFoldersByName(folderName);
if (folderList.hasNext()) {
// found matching folder
var folder = folderList.next();
// search for files with matching name
var fileList = folder.getFilesByName(fileName);
if (fileList.hasNext()) {
// found matching file - append text
var file = fileList.next();
var combinedContent = content;
file.setContent(combinedContent);
}
else {
// file not found - create new
folder.createFile(fileName, content);
}
}
}
问题是,当我导出数据时,它用空行导出,并且在 .txt 上显示了我不想拥有的空行,我该怎么做?所以我只导出有内容的行。
这就是 .txt 的样子 https://i.stack.imgur.com/wplZL.png
解决方案
我认为您的问题的原因可能是由于sheet.getRange('G3:G50')
. 在这种情况下,即使空行包含在 的范围内的数据范围之下,也会G3:G50
检索range.getValues()
的所有行G3:G50
。如果要检索具有数据范围的值,那么下面的修改如何?
从:
var range = sheet.getRange('G3:G50');
到:
var range = sheet.getRange('G3:G' + sheet.getLastRow());
并且,当您要删除“G”列的所有空行时,您还可以使用以下修改。
从:
var range = sheet.getRange('G3:G50');
var rows = range.getValues();
到:
var range = sheet.getRange('G3:G' + sheet.getLastRow());
var values = range.getValues().filter(([g]) => g.toString() != "");
参考:
推荐阅读
- php - Google 课堂 - 创建课程错误 PHP
- google-analytics - 客户端 ID 可以用于追溯过滤内部流量吗?
- javascript - 如何使用 Discord.js 中的反应让用户回答问题?
- c# - 如何从 TextBlock 中删除字典资源引用?
- html - 关键帧动画由于某种原因不起作用
- c# - 任务卡在“[计划并等待运行]”中
- lua - 如果我在射击时(在连发和自动模式下)不装备枪,它会停止工作 -ROBLOX STUDIO
- pine-script - 访问变量的奥秘
- flutter - Flutter中没有连接时如何处理CachedNetworkImage的错误?
- angular - 如何使用 NS 7 和 Angular 10 解决 nativescript-google-maps-sdk 问题