如何使用管道分隔符导出到 .csv

2024-03-22

我使用 Google Sheets(电子表格)来合并我的 Gambio 商店的不同来源的文章数据。 要导入数据,我需要在 .csv 文件中使用管道符号作为分隔符/分隔符,并使用 " 作为文本分隔符。 在用于导出到 .csv 的 Google 表格菜单中没有选项。

有没有办法在 Google 表格中使用管道分隔符导出到 .csv?


有多种方法可以从 Google 表格导出电子表格和/或工作表。将工作表导出为 csv 文件内置于 Google 表格(文件、下载、CSV)中。

在这种情况下,OP 引入了“标准”方法无法解决的两个复杂问题。
1)由“管道”字符分隔的字段(|), and
2) 所有字符串字段都要用双引号括起来。

GitHub 上有多个脚本可以自动将工作表另存为 csv。导出命名表作为-csv.gs https://gist.github.com/mrkrndvs/a2c8ff518b16e9188338cb809e06ccf1作者:迈克尔·德拉森(https://gist.github.com/mderazon/9655893 https://gist.github.com/mderazon/9655893)是一个示例,我用它作为此代码的基础。但是,这些脚本遵循使用逗号作为字段分隔符的“正常”规则,并且没有对字符串进行特殊处理。

以下代码将活动工作表保存为 csv 文件,并提供管道字段分隔符和字符串周围的双引号。用户可以通过编辑“参数”表上的字段来指定这些参数,如此屏幕截图所示。


Parameter settings

该脚本使用typeof识别字符串和函数isValidDate德米特罗·舍甫琴科 (Dmytro Shevchenko) 在在 JavaScript 中检测“无效日期”Date 实例 https://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript.

/*
 * script to export data in all sheets in the current spreadsheet as individual csv files
 * files will be named according to the name of the sheet
 * author: Michael Derazon
 * source: https://gist.github.com/mderazon/9655893
 * adapted by Ted Bell for https://stackoverflow.com/questions/49248498/how-can-i-export-to-csv-with-pipe-delimiter
 */
function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var csvMenuEntries = [{
        name: "export as csv file",
        functionName: "saveAsCSV"
    }];
    ss.addMenu("CSV Export", csvMenuEntries);
};

function saveAsCSV() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ssname = ss.getName();
    var sheet = ss.getActiveSheet();
    var sheetname = sheet.getSheetName();
    //Logger.log("DEBUG: the name of the spreadsheet is "+ssname);//DEBUG
    //Logger.log("DEBUG: the sheet name is "+sheetname);// DEBUG

    //// create a folder from the name of the spreadsheet
    var folder = DriveApp.createFolder(ssname.toLowerCase() + '_' + sheetname.toLowerCase().replace(/ /g, '_') + '_csv_' + new Date().getTime());
    //Logger.log("DEBUG: the folder name is "+folder);//DEBUG

    // append ".csv" extension to the sheet name
    var fileName = ssname + '_' + sheetname + ".csv";

    // convert all available sheet data to csv format
    var csvFile = so_4225484202(fileName);

    // create a file in the Docs List with the given name and the csv data
    folder.createFile(fileName, csvFile);

    Browser.msgBox('Files are waiting in a folder named ' + folder.getName());
}


function isValidDate(date) {
    return date && Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date);
}


function so_4225484202(filename) {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var paramsheet = ss.getSheetByName("Parameters");

    var linearray = [];
    var rowdata = [];
    var csv = "";
    var fieldvalue = "";

    var param = paramsheet.getRange(2, 2, 2);
    var paramValues = param.getValues();
    //Logger.log("DEBUG: parameters = "+param.getA1Notation());//DEBUG
    var fieldDelimiter = paramValues[0][0];
    var textDelimiter = paramValues[1][0];
    //Logger.log("DEBUG: field delimiter: "+fieldDelimiter+", text delim: "+textDelimiter);//DEBUG


    var rangeData = sheet.getDataRange();
    var lastColumn = rangeData.getLastColumn();
    var lastRow = rangeData.getLastRow();
    //Logger.log("DEBUG: lastColumn: "+lastColumn+", lastRow: "+lastRow);//DEBUG

    // Get array of values in the Data Range
    var rangeValues = rangeData.getValues();

    // Loop through array and build values for csv
    for (i = 0; i < lastRow; i++) {
        for (j = 0; j < lastColumn; j++) {

            var value = rangeValues[i][j];
            var theType = typeof value;

            if (theType === "object") {
                var testdate = isValidDate(value);
                //Logger.log("if typeof is object: testdate: "+testdate);//DEBUG
                var testtype = typeof testdate;
                if (testtype === "boolean") {
                    // variable is a boolean
                    //Logger.log("Its a date");//DEBUG
                    theType = "date";
                } else {
                    //Logger.log("Its not a date");//DEBUG
                }
            }
            if (theType === "string") {
                value = textDelimiter + value + textDelimiter;
            }

            rowdata.push([value]);
        };

        //Logger.log("DEBUG: rowdata: "+rowdata);//DEBUG
        csv += rowdata.join(fieldDelimiter) + "\n";
        var rowdata = [];

    };

    //Logger.log("DEBUG: csv: "+csv);//DEBUG
    return csv;

}

This 电子表格 https://docs.google.com/spreadsheets/d/1EpbcGJ9aIdLdWXKBVB7_J0o8NSuNnjb5eeIvDAaUSZM/edit?usp=sharing包含样本数据。 包含近 1,000 条记录的工作表的处理和保存时间约为 5 秒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用管道分隔符导出到 .csv 的相关文章

  • 两列单元格列表(下拉列表) - Google Sheet

    我需要一个两列单元格列表 下拉列表 默认情况下 使用数据验证选项我们只能在单元格列表中看到单列值 但我想从两个不同的列填充列表 请看下面的示例表 Example Table Column A Column B Sr 1 Product On
  • 在闪亮的应用程序中选择文件夹或文件夹目录

    我在使用闪亮时遇到问题 我想选择保存我要在应用程序中使用的所有文件的文件夹 方法是 1 将工作目录设置为该文件夹路径 或 2 将此文件夹内的所有 csv 数据上传到我的应用程序以进行进一步处理 1 我找到了shinyFiles包 但它非常非
  • 在 JSON 转换为 CSV 期间保持 JSON 键的顺序

    我正在使用此处提供的 JSON 库http www json org java index html http www json org java index html为了将 json 字符串转换为 CSV 但我遇到的问题是 转换后键的顺序
  • Google Sheets - 如何将过滤功能与过滤视图结合起来

    我一直在处理一个包含 100 多行的电子表格 并发现了一种巧妙的方法来合并 隐藏 复选框 该复选框将隐藏 C 列与框旁边指定的特定值 建筑类型 匹配的任何行 为此 我首先创建了一个如下函数 FILTER Data A1 OR Data C1
  • .setFormula() 并收到错误缺少 ) 参数列表

    I have setFormula 并坚持这一点 我认为问题在于逗号 在发布这个问题之前 我研究了几个在线论坛 但没有运气 也许这里有人可以帮助我 我确实知道使用的规则 and 这就是为什么我尝试了几个公式 但仍然收到错误消息 参数列表后缺
  • 将 word2vec 模型查询的结果保存在 csv 文件中?

    我正在语料库上训练 word2vec 模型 然后查询该模型 这工作正常 但我正在运行一个实验 需要针对不同的条件调用模型 保存每个条件的模型 查询每个条件的模型 然后将查询的输出保存到 csv 文件中 例如进一步分析所有条件 我研究了 ge
  • Scala 和 Spark:Windows 上的 Dataframe.write._

    有人设法使用 Spark 写入文件 尤其是 CSV 吗 数据框 http spark apache org docs latest api scala index html org apache spark sql Dataset在 Win
  • 从云函数在 Google Cloud Storage 中创建新的 csv 文件

    第一次使用 Google 云存储 下面我有一个云函数 每当 csv 文件上传到时就会触发该函数my folder在我的桶里 我的目标是在同一文件夹中创建一个新的 csv 文件 读取上传的 csv 的内容并将每一行转换为将进入新创建的 csv
  • 如何读取 Google 表格中单元格的颜色

    我正在使用 Python Google Sheets API 并且我想读取单个单元格的颜色 我已阅读文档 但我只能找到有关如何从单元格检索文本的信息 而不是颜色格式的信息 您可以使用方法 电子表格 get https developers
  • 如何更改 Google 表格中图表的背景不透明度?

    我想在 Google 表格中设置 Google 图表的透明度或不透明度 就像在 Microsoft Excel 中一样 将图像设置在文本后面 以便文本仍然可读 不过好像该功能不起作用 功能预览 http drive google com f
  • 将数据从 Google Drive 中的 CSV 文件导入到 Google Sheet

    我使用 SAS 每 24 小时生成两个 CSV 文件 我使用 bat 脚本将生成的 CSV 文件保存在 Google Drive 的文件夹中 CSV 文件被替换 因此文件夹中始终只有这两个文件 CSV 文件以 分隔 并且仅包含三列或四列 我
  • 需要初学者 PHP 帮助

    我学习 PHP 一段时间了 我想要一个澄清 我见过preg match使用不同的分隔符号调用函数 例如 preg match and preg match 今天我还看到了 正在使用 我的问题分为两部分 所有字符都可以使用什么 有一个标准吗
  • 复制电子表格也会复制所有链接的文件

    当我使用库方法时 我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称 spreadSheet copy newSSName Or myFile makeCopy newNameOfFile 目前 这些方法复制所有链接的表单和表单
  • 仅从 tsv 中的列索引生成“特殊”字典结构

    想象一下这样一个制表符分隔的文件 9606 1 GO 0002576 TAS platelet degranulation Process 9606 1 GO 0003674 ND molecular function z Function
  • 使用 Python 将列名称与 CSV 文件中的数据对齐

    这是我用来将数据写入 csv 文件的代码 with open temp csv a as fp a csv writer fp delimiter t data faceXpos faceYpos faceHeight faceWidth
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 根据单元格值隐藏列

    在我的谷歌电子表格 A 中 我使用 TRANSPOSE 和 IMPORTRANGE 公式的组合从日历电子表格 B 导入数据 以便填写事件的工作时间表 因为每个日期都有 3 个事件空位 但这些空位并不总是被填满 所以我收到了很多过时的列 表格
  • 在powershell的列中处理带有换行符的CSV

    目前 我有一个系统 它创建一个像下面这样的分隔文件 在其中我模拟了偶尔出现在列中的额外换行符 列 1 列 2 列 3 列 4 文本1 文本2 LF 文本3 LF 文本4 CR LF 文本1 文本2 LF LF 文本3 文本4 CR LF 文
  • 批量插入不适用于 NULL 数据

    当我从 CSV 文件将批量数据插入到表中时 它不起作用 显示错误 第 2 行第 9 列的批量加载数据转换错误 类型不匹配或指定代码页的字符无效 csv 文件中的第 9 列值为空 我该如何处理这个问题 根据这些信息 我认为目标表的特定字段被定
  • Import-Csv - 成员已存在问题

    我必须将多个 CSV 文件合并为一个文件 每个 CSV 都有一个标题 其中一列标题是相同的 理想情况下 最终文件 all out csv 必须有一个标头 我运行 PowerShell 代码 Import Csv out 1 result c

随机推荐

  • 处理双重间接时避免不兼容的指针警告

    假设这个程序 include
  • R 的 C API 中的 SEXP 数据类型到底是什么以及为什么使用它? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道关于 SEXP 的维基百科页面 并且我知道它代表符号表达 我 模糊地 知道 SEXP 是指 Lisp 中的树数据结构的符号 但我
  • 方向改变时 Activity 不断重新启动

    当屏幕旋转或用户在手机上滑动键盘时 如何防止活动重新启动 这可能吗 有解决办法吗 感谢所有相关答案 您可以通过在您的activity你的元素manifest xml 有问题的元素称为android configChanges 并且您需要注册
  • 上传错误:无法连接到 DataPusher。 ckan 2.4.3 中的错误

    我正在尝试将我的数据集上传到数据存储区 我创建数据集并尝试使用 ckan 界面中的 上传到数据存储 菜单将数据集上传到数据存储 我收到 上传错误 无法连接到 DataPusher Web 中的错误消息不在任何日志中 ckan 日志 data
  • 如何使用 RemoteViews 更新通知?

    我正在创建一个通知RemoteViews https d android com reference android widget RemoteViews从一个习惯Service 它在前台模式下以通知方式运行 也就是说 只要通知对用户可见
  • 根据另一列的相应行值创建行子集?

    让 CSV 包含两列 年龄 和 性别 其中 Age 30 24 55 61 70 21 Gender Male Female Male Male Male Female 我希望它向我显示与 Gender Male 相对应的所有 Age 值
  • R 从一个向量的最大值中提取 data.frame 的子集并按另一个向量分组[重复]

    这个问题在这里已经有答案了 gt ID lt c A A A B B B C C C C C gt WK lt c 1 2 3 1 2 3 1 2 3 4 5 gt NumSuccess lt c 0 0 2 0 0 1 0 0 0 0 3
  • 导出数组以在另一个 javascript 文件中使用

    在我的帖子请求中 我想检查是否thisString存在于另一个 javascript 文件数组中 Array js exports names John Mary Main js if names includes thisString d
  • jQuery UI 对话框关闭并没有清除对话框

    Using jQuery用户界面 http en wikipedia org wiki JQuery UI 我有一个选项卡插件 在选项卡 1 中加载了一个包含表格的页面 每行都有一个对话框的链接 一切正常 保存以下内容 对话框中有一个选项可
  • 在 Win32 程序中用 main() 函数替换 WinMain()

    我在 StackOverflow 和 Google 上进行了一些搜索 但没有找到答案 我想用这种类型的用户编程来启动我的应用程序 int main Window App Test 640 480 while App IsOpen Do th
  • JavaScript 变量作用域 [重复]

    这个问题在这里已经有答案了 我的一些 JavaScript 代码有问题 Script setTimeout function for var i 0 i lt 5 i setTimeout function console log i i
  • Swift 和变异结构

    当谈到 Swift 中的值类型变化时 我并不完全理解 正如 Swift 编程语言 iBook 中所述 默认情况下 无法从其实例方法中修改值类型的属性 为了使这成为可能 我们可以用mutating结构体和枚举中的关键字 我不完全清楚的是 您可
  • 如何使用 C# 以编程方式复制 MS SQL 2000 数据库?

    我需要使用 C VS 2005 将多个表从一个数据库复制到 SQL Server 2000 中的另一个数据库 该调用需要参数化 我需要能够传入我要将这些表复制到的数据库的名称 我可以使用带参数的 DTS 但我找不到任何从 C 执行此操作的示
  • 以 EXCEL 格式导出 HP Fortify SCA 4.10 结果

    我使用 HP Fortify SCA 4 10 进行扫描 现在我想将原始结果导出为 Excel 格式以进行数据处理以生成数据透视表 任何人都可以建议一个简单或困难的方法来做到这一点 引用此 url 获取 DB 脚本以获取 EXCEL 格式
  • 与小写变量名称匹配的 Scala 模式

    我发现当使用模式匹配与替代项 对于字符串 时 Scala 接受以大写字母开头的变量 在下面的示例中 MyValue1 and MyValue2 但不是以小写字母 myValue1 myValue2 这是 Scala 的错误还是功能 我在 2
  • 避免嵌入式目标上的虚拟函数

    我有一个class Player从由许多相等的块组成的大内存块中回放数据 typedef char chunk t 100 typedef struct chunk t data 100 blockOfMemory t 理论上 播放器本身可
  • 如何在不使用Tensorboard的情况下在Tensorflow中绘制损失曲线?

    嘿 我是 Tensorflow 新手 我使用 DNN 来训练模型 我想绘制损失曲线 但是 我不想使用 Tensorboard 因为我对此并不熟悉 我想知道是否可以提取每个步骤中的损失信息并使用其他绘图包或 scikit learn 绘制它
  • 没有重复子项的树

    Using anytree https pypi python org pypi anytree我制作了这样的树 A B C D F B C E G 有没有办法删除所有重复的子级并将其变成下面的树 对所有可能级别的子级进行递归 A B C
  • Android:如何重置发布版本的 resConfigs?

    为了让开发更快 我想做以下事情 android defaultConfig resConfigs en 我的应用程序有多种语言 这样做可以在开发时节省大量时间 但是 我不想发布包含此集的版本 很遗憾 resConfigs不适用于产品口味或构
  • 如何使用管道分隔符导出到 .csv

    我使用 Google Sheets 电子表格 来合并我的 Gambio 商店的不同来源的文章数据 要导入数据 我需要在 csv 文件中使用管道符号作为分隔符 分隔符 并使用 作为文本分隔符 在用于导出到 csv 的 Google 表格菜单中