【问题标题】:Improve Code of automatically import data from uploaded CSV or XLS file into Google Sheets改进自动将上传的 CSV 或 XLS 文件中的数据导入 Google 表格的代码
【发布时间】:2019-11-29 12:32:08
【问题描述】:

问题是:每当我运行脚本时,它都会创建一个名为“NEWDATA”的新工作表,因此我无法触发自动运行脚本,(这意味着我必须删除 NEWDATA 工作表才能运行脚本一超过时间)。

if ( fi.hasNext() ) { // proceed if "report.csv" file exists in the reports folder
var file = fi.next();
var csv = file.getBlob().getDataAsString();
var csvData = CSVToArray(csv); // see below for CSVToArray function
var newsheet = ss.insertSheet('NEWDATA');// create a 'NEWDATA' sheet to store imported data
// loop through csv data array and insert (append) as rows into 'NEWDATA' sheet
for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
  newsheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
}
/*
** report data is now in 'NEWDATA' sheet in the spreadsheet - process it as needed,
** then delete 'NEWDATA' sheet using ss.deleteSheet(newsheet)
*/
// rename the report.csv file so it is not processed on next scheduled run
file.setName("report-"+(new Date().toString())+".csv");

我希望有人可以帮助我将这段代码修复为结果:它将数据从 csv 文件写入现有工作表,因此数据将是可连续的,我的意思是“追加”功能。抱歉,我是新手,我尝试了很多方法,但对我来说太难了,谢谢。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    代替:

    var newsheet = ss.insertSheet('NEWDATA');
    

    用途:

    var newsheet = ss.getSheetByName('NEWDATA') || ss.insertSheet('NEWDATA');
    

    它会在创建新工作表之前检查工作表是否存在。

    【讨论】:

    • +1,非常感谢,你帮了我很多,但现在只剩下 1 个问题,当我运行脚本时,报告 csv 文件中的新数据会覆盖当前数据,所以无论如何要让它更新在 NEWDATA 表中的当前数据下方。
    • +1,非常感谢,你帮了我很多,但现在只剩下 1 个问题,当我运行脚本时,报告 csv 文件中的新数据会覆盖当前数据,所以无论如何要让它更新在 NEWDATA 表中的当前数据下方。
    • 您可以循环遍历数据@HungCao并验证新值。
    猜你喜欢
    • 2015-01-07
    • 2020-02-23
    • 2014-02-15
    • 1970-01-01
    • 2018-08-17
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多