我一直在下一个剧本中工作:
function test(){
var archivos = DriveApp.getFolderById("someFolderID").getFiles();
var appendTo = SpreadsheetApp.openById("someSpreadsheetID");
var ss = appendTo.setActiveSheet(appendTo.getSheets()[0]);
Logger.log(ss.getName())
var csvData = Utilities.parseCsv(csvFile);
while(archivos.hasNext()){
var archivo = archivos.next()
var csvFile = archivo.getBlob().getDataAsString();
var numRows = ss.getLastRow() +1;
var csvData = Utilities.parseCsv(csvFile);
ss.getRange(numRows , 1, csvData.length, csvData[0].length).setValues(csvData);
SpreadsheetApp.flush();
}
}
我需要每周运行它上传一个新的csv。每一次。
所以,问题是:如果不再上传旧的和已经上传的文件,我怎么能这样做呢?像一次性条件。
谢谢!
答案 0 :(得分:0)
一种选择是在PropertiesService的脚本中记录您上次执行备份的时间:
...
SpreadsheetApp.flush();
}
PropertiesService().getScriptProperties().setProperty("Last Backup", String(new Date().getTime()));
}
您将在脚本中检查此时间戳(如果未设置该属性,则默认为0),并确保您只处理自上次备份以来已修改的文件。
...
var ps = PropertiesService().getScriptProperties();
var lastUpdateTime = ps.getProperty("Last Backup") || 0;
while (archivos.hasNext()) {
var archivo = archivos.next();
if (archivo.getLastUpdated().getTime() - lastUpdateTime > 0) {
/*
Get as a CSV file, append to spreadsheet, etc.
*/
SpreadsheetApp.flush();
}
}
ps.setProperty("Last Backup", String(new Date().getTime()));
}
我已经给出了上面的示例代码,假设这是将要使用的唯一脚本(即getScriptProperties()
是最有用的存储设备),但是根据这个脚本的使用方式,其中一个其他两个可能对你更有意义。