我正在尝试编写一个脚本,用于传递Google电子表格中的信息,将其编译为CSV文件并通过电子邮件发送该文件。
我的问题:我的Excel文件中的CSV文件与我的Google电子表格(死链接)非常不同。
这是我的Excel文件的样子,粘贴到另一个Google电子表格中。
我正在使用的代码如下:
function myFunction() {
//get active sheet, the last row where data has been entered, define the range and use that range to get the values (called data)
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getLastRow();
var range = sheet.getRange(1,1,lastRow,91);
var data = range.getValues();
//define a string called csv
var csv = "";
//run for loop through the data and join the values together separated by a comma
for (var i = 0; i < data.length; ++i) {
csv += data[i].join(",") + "\r\n";
}
var csvFiles = [{fileName:"example.csv", content:csv}];
MailApp.sendEmail(Session.getUser().getEmail(), "New Journey Information", "", {attachments: csvFiles});
}
答案 0 :(得分:1)
您需要确保单个单元格的数据是原子的。例如,您在工作表上看到的时间包含一个Date对象,当您的脚本读取时,然后当写入CSV时,它可以转换为日期&amp;带逗号的时间字符串,具体取决于您的语言环境。 (例如,2013年1月4日14:34。)为了安全地使用可能被Excel解释为分隔符的标点符号,您应该用引号将每个元素括起来。
无需修改代码,因为Docslist Tutorial中提供的示例之一已解决此问题。因此,一个简单的解决方案是替换您的代码。
按如下方式更改提供的saveAsCSV()
的第一位,它将通过用户输入或通过传递文件名作为参数来运行。
function saveAsCSV(filename) {
// Prompts the user for the file name, if filename parameter not provided
fileName = filename || Browser.inputBox("Save CSV file as (e.g. myCSVFile):");
...