Javascript 创建基本Google脚本以复制SS并保存到我的驱动器上的特定文件夹

Javascript 创建基本Google脚本以复制SS并保存到我的驱动器上的特定文件夹,javascript,google-apps-script,google-sheets,google-drive-api,Javascript,Google Apps Script,Google Sheets,Google Drive Api,我有一个基本的脚本,我发现它非常适合我的需要。我要复制的文件每天更新一次。更新该文件的人每天都会覆盖该文件,因此我试图将该文件的历史副本存储到驱动器上的文件夹中。下面的脚本确实复制了文件并为我创建了文件。然而,我正在努力完善一些东西 function DailyPerformanceCopy() { ScriptApp.newTrigger('DailyPerformanceTrigger') .forSpreadsheet('ENTERSPREADSHEETIDHERE') .

我有一个基本的脚本,我发现它非常适合我的需要。我要复制的文件每天更新一次。更新该文件的人每天都会覆盖该文件,因此我试图将该文件的历史副本存储到驱动器上的文件夹中。下面的脚本确实复制了文件并为我创建了文件。然而,我正在努力完善一些东西

    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日等 当前保存为:性能周一2020年3月16日14:45:09 GMT-0400东部夏令时

它当前保存到我的驱动器的根目录中。我想把它保存到我创建的名为Performance的文件夹中

我不确定它是否会在明天文件更新后执行。我想是吧


如果您已经运行了很长时间,那么我建议您进入当前的项目触发器,删除一些onEdit触发器,然后仅在触发器不存在的情况下创建一个触发器。我已经很久没有运行这个了。我将从今天开始整理这些。我根本没有运行过这个。我确实从我的编辑器外壳中运行了它,它确实复制并保存了一个文件到我的驱动器中。好吧,在创建另一个触发器之前,您应该始终检查是否已经有一个具有该名称的触发器。明白。这是我创建的第一个脚本,所以我无法想象我还有其他触发器感谢你的帮助!在尝试运行更改时,我遇到了一个错误:您的脚本Daily Performance Copy最近未能成功完成。故障摘要如下所示。要为此脚本配置触发器,或更改接收未来故障通知的设置,请单击此处。该脚本由文档性能管理器使用。启动功能错误消息触发器结束3/18/20 9:56 AM Daily执行该操作需要PerformanceCopy授权。更改3/18/20 9:56 AM谢谢您的帮助!我没有原始文件的编辑权限,所以明天更新后我会看到。再次感谢你!
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;
}