我有一个基本脚本,我发现它非常适合我的需求。我要复制的文件每天更新一次。更新它的人每天都会覆盖该文件,因此我尝试将该文件的历史副本存储到我的驱动器上的文件夹中。下面的脚本会复制文件并为我创建文件。不过,我正在努力完善一些东西。
function DailyPerformanceCopy() {
ScriptApp.newTrigger('DailyPerformanceTrigger')
.forSpreadsheet('ENTERSPREADSHEETIDHERE')
.onEdit()
.create();
var date = new Date();
Logger.log(Utilities.formatDate(date,'America/Chicago', 'MMMM dd, yyyy'));
var ss = SpreadsheetApp.openById("ENTERSPREADSHEETIDHERE");
//Make a copy of the template file
var documentId = DriveApp.getFileById('ENTERSPREADSHEETIDHERE').makeCopy().getId();
//Rename the copied file
DriveApp.getFileById(documentId).setName('Performance ' + date);
}
- 我希望复制的文件仅保存为“性能 + 当前月、日、年”。 (2020 年 3 月 16 日的表演。明天的副本将保存为 2020 年 3 月 17 日的表演等)
当前保存为:Performance Mon Mar 16 2020 14:45:09 GMT-0400(东部夏令时间)
它当前被保存到我的驱动器的根目录中。我希望将其保存到我创建的名为“Performance”的文件夹中
我不确定明天文件更新后是否会执行。我假设是这样?
最佳答案
function DailyPerformanceCopy() {
const ss=SpreadsheetApp.openById("**************ENTERSPREADSHEETIDHERE******************");
const dfldr=DriveApp.getFolderById('************Enter Folder Id***************')
if(notTrigger('DailyPerformanceTrigger')) {ScriptApp.newTrigger('DailyPerformanceTrigger').forSpreadsheet(ss.getId()).onEdit().create();}
const ts=Utilities.formatDate(new Date(),'America/Chicago', 'MMMM dd yyyy');
const file=DriveApp.getFileById(ss.getId());
const name=Utilities.formatString('Performance %s', ts);
file.makeCopy(name, dfldr);
}
function notTrigger(funcname) {
const tA=ScriptApp.getProjectTriggers();
for(var i=0;i<tA.length;i++) {if(tA[i].getHandlerFunction()=='funcname') {return true;}}
return false;
}
关于javascript - 创建基本的 Google 脚本来复制 SS 并保存到我的驱动器上的特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711815/