javascript - 将行另存为文本文件,从单元格中获取文件名
问题描述
这个 google 脚本成功地为每一行创建了一个文本文件,但它以行号命名每个文件,例如“row0.txt”、“row1.txt”。我想在其相关行中为 ColA 中的单元格命名每个文本文件。row1.txt 将保存为 White Ribbon - 1999.txt row2.txt 将保存为 Contagion - 2011.txt
我意识到诀窍在最后两行,但我对如何获得正确的单元格内容(A1、A2、A3 等)作为每行的文件名感到困惑。
这是我的电子表格
这是我正在使用的脚本(注意我保存到 *md 而不是 *txt)
function saveRowsToTextfile() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("B2:W4");
var rows = range.getValues();
var folder = DriveApp.getFoldersByName("Test").next();
var files = folder.getFiles();
while(files.hasNext()) files.next().setTrashed(true);
rows.forEach(function(row, index) {
folder.createFile("row" + index + ".md", row.join("\n"));
});
}
解决方案
在您的范围中包含列 Ashift()
并在加入数组之前使用以删除每个子数组的第一个元素,即标题。
您的代码应如下所示:
function saveRowsToTextfile() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("A2:W4");
var rows = range.getValues();
var folder = DriveApp.getFoldersByName("Test").next();
var files = folder.getFiles();
while(files.hasNext()) files.next().setTrashed(true);
rows.forEach(function(row) {
var title = row[0]; //set first element of array as title
row.shift(); //remove first element of the array
var content = row.join("\n");
folder.createFile(title + ".md", content);
});
}
输出:
参考
推荐阅读
- php - WooCommerce - 如何在标签云中没有“库存”产品时隐藏产品标签
- php - WordPress 循环是否遍历每个帖子然后在找到当前帖子时停止?
- r - 有没有办法只保留白名单中字符串中定义的字符?
- sql - 过滤和比较 array_agg 值
- php - Laravel RedirectIfAuthenticated
- css - Node sass 没有在本地编译
- snowflake-cloud-data-platform - Snowflake ON_ERROR=CONTINUE 中止文件的 COPY 命令
- ios - 基于属性 bool 值写入访问权限的 Firestore 规则
- qnx - 使用 pidin 命令的处理器信息
- scopus - pybliometrics:.get_coauthors() 方法如何影响 API 配额?