csv - 按名称将 CSV 导入谷歌表格
问题描述
我一直在使用以下功能将 CSV 附件加载到谷歌表格中:
function importCSVFromGmail() {
var threads = GmailApp.search("from:cbuffone123@gmail.com");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
该功能当前获取从该电子邮件发送的任何附件。我想更改该功能,使其仅选择名为“data.CSV”的附件并忽略所有其他附件。有没有办法做到这一点?
先感谢您!
所以我将其修改为:
function Exact_CSV_Import() {
var threads = GmailApp.search("from:cbuffone123@gmail.com");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
for (var n = 0; n < attachment.length; n++) {
var attachmentName = attachments[n].getName();
if (attachmentName = "data1.csv")
{
// do stuff with "data1.csv"
attachment.setContentTypeFromExtension();
if (attachment.getContentType() === "text/csv") {
var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
}
}
似乎什么也没发生。我没有收到任何错误,但它似乎没有做任何事情?
解决方案
这个说法:
var attachment = message.getAttachments()[0];
只查看由返回的附件数组中的第一个附件.getAttachments()
而是使用var attachments = message.getAttachments();
然后,您可以遍历附件并选择您想要的附件。
该循环将打印出附件的名称及其大小;
for (var n = 0; n < attachments.length; n++) {
Logger.log( attachments[n].getName(), attachments[n].getSize());
}
你应该可以从那里继续...
编辑:更多说明以根据要求选择性地处理不同的 CSV 文件。
我很确定attachments
不是关联数组,所以你不能做像附件[“csv”]这样的事情。但是您可以遍历附件列表并挑选出您想要的名称并忽略其余的。请参阅下面的一些代码...
for (var n = 0; n < attachments.length; n++) {
var attachmentName = attachments[n].getName();
if (attachmentName = "data1.csv")
{
// do stuff with "data1.csv"
}
else
if ((attachmentName = "data2.csv")
{
// do stuff with "data1.csv"
}
else
{
// do nothing - just skip it
}
}
推荐阅读
- google-cloud-platform - 在没有角色/所有者的 GCP 上部署 Kubeflow 1.3
- javascript - ava 抛出 npm ERR!当 sinon 存根抛出新错误时测试失败
- java - java - 如何在Java中的Android Studio中比较具有相同JSON中相同键的JSON对象?
- r - 如何将此数据框写入excel(xlsx)?
- javascript - 合并2个html5画布的捕获视频流
- embedded - 如何从 LSM6DSOXTR 读取陀螺仪值?
- forms - 表单输入背景颜色在加载后一毫秒从指定的浅黄色变为浅蓝色
- amazon-redshift - 用户权限查询上的redshift listagg
- javascript - RactJs/Laravel - 无法提交表单的问题
- android - 我们检测到您的应用正在使用旧版本的 Google Play 结算。到 2021 年 11 月,所有应用更新必须使用版本 3 或更新版本