Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 我编写了一个脚本将文件复制到备份文件夹,但独立的webapp文件会被复制到根目录_Google Apps Script_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script 我编写了一个脚本将文件复制到备份文件夹,但独立的webapp文件会被复制到根目录

Google apps script 我编写了一个脚本将文件复制到备份文件夹,但独立的webapp文件会被复制到根目录,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,有人知道为什么会这样吗?将所有文件复制到目的地会方便得多。我有一个文件名列表,文件ID 3是电子表格,一个是独立脚本,我将其部署为webapp。三个电子表格放在正确的位置。独立webapp将转到根目录。我不认为这是一个重复的建议 function backUpProjectFiles(){ var backupFolder=DriveApp.getFolderById(getGlobal('BackupDirId')); var subFldrName='BackUpFiles_'

有人知道为什么会这样吗?将所有文件复制到目的地会方便得多。我有一个文件名列表,文件ID 3是电子表格,一个是独立脚本,我将其部署为webapp。三个电子表格放在正确的位置。独立webapp将转到根目录。我不认为这是一个重复的建议

  function backUpProjectFiles(){
  var backupFolder=DriveApp.getFolderById(getGlobal('BackupDirId'));
  var subFldrName='BackUpFiles_' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd_HH:mm:ss');
  var subFldr=backupFolder.createFolder(subFldrName);
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('BackUpFiles');
  var rg=sh.getDataRange();
  var vA=rg.getValues();//column1 is filenames column2 is file ids
  var s='<br />Files Backed Up:<br />';
  for(var i=1;i<vA.length;i++){
    var file=DriveApp.getFileById(vA[i][1]);
    file.makeCopy(vA[i][0],subFldr);
    s+=Utilities.formatString('%s FilePath:%s/%s/<strong>%s</strong><br />',i,backupFolder.getName(),subFldr.getName(),file.getName());
  }
  s+=Utilities.formatString('Total Files Copied: %s<br /><input type="button" value="Exit" onClick="google.script.host.close();" />',vA.length-1)
  var ui=HtmlService.createHtmlOutput(s).setWidth(600).setHeight(500);
  SpreadsheetApp.getUi().showModelessDialog(ui,'File Backup Complete');
}  
函数backUpProjectFiles(){
var backupFolder=DriveApp.getFolderById(getGlobal('BackupDirId'));
var subFldrName='BackUpFiles'+Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'yyyy-MM-dd_HH:MM:ss');
var subFldr=backupFolder.createFolder(subFldrName);
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(“备份文件”);
var rg=sh.getDataRange();
var vA=rg.getValues();//column1是文件名column2是文件ID
var s='
备份的文件:

对于(var i=1;i我使用驱动API的“更新”方法修改了您的脚本

  • 使用
    makeCopy()
    复制文件
  • 如果文件的mimeType是Google Apps脚本,则使用驱动API的“更新”方法将文件移动到
    subFldr
  • 如果文件的mimeType不是googleapps脚本,则不使用“update”方法
  • 修改脚本:
    函数backUpProjectFiles(){
    var backupFolder=DriveApp.getFolderById(getGlobal('BackupDirId'));
    var subFldrName='BackUpFiles'+Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'yyyy-MM-dd_HH:MM:ss');
    var subFldr=backupFolder.createFolder(subFldrName);
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getSheetByName(“备份文件”);
    var rg=sh.getDataRange();
    var vA=rg.getValues();//column1是文件名column2是文件ID
    var s='
    备份的文件:

    对于(var i=1;i相关的可能重复项),我认为这是一个bug。它仍然没有被删除。那么这些信息对您的情况有用吗?当然,您也可以使用“更新”的方法来完成对于驱动器API v3。我认为批处理请求可能适合这种情况。@Tanaike非常感谢您提供的信息。我需要研究一下,因为我没有太多使用驱动器API。@Rubén我认为OP的问题是,当使用
    makeCopy()将Google文档和独立项目复制到特定文件夹时
    ,虽然Google文档可以复制到文件夹中,但独立项目会复制到根文件夹中,而无法复制到文件夹中。我认为这是一个错误。@Cooper欢迎您。也谢谢您。我使用了这个
    Drive.Files.update({“parents”:[{“id”:subFldr.getId()}]},res.getId())
    在几个地方,它工作得很好。但最近我一直在尝试让它允许我将Google文档文件保存在团队驱动文件夹中。有什么建议吗?@Cooper尽管我无法确认此示例是否工作,因为我没有团队驱动,但此脚本如何?
    drive.Files.update({“parents”)[{“id”:subFldr.getId()}},res.getId(),null,{SupportSteamDrive:true,includeTeamDriveItems:true})
    文档是。很抱歉,我无法在我的环境中运行它。因此,如果这不起作用,我真的很抱歉。就是这样。谢谢。我尝试了类似的方法,但忘记在第三个术语中添加空值。@Cooper我很高兴您的问题得到解决。谢谢您的回复。
    function backUpProjectFiles(){
      var backupFolder=DriveApp.getFolderById(getGlobal('BackupDirId'));
      var subFldrName='BackUpFiles_' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd_HH:mm:ss');
      var subFldr=backupFolder.createFolder(subFldrName);
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('BackUpFiles');
      var rg=sh.getDataRange();
      var vA=rg.getValues();//column1 is filenames column2 is file ids
      var s='<br />Files Backed Up:<br />';
      for(var i=1;i<vA.length;i++){
        var file=DriveApp.getFileById(vA[i][1]);
    
        var res = file.makeCopy(vA[i][0],subFldr); // Modified
        if (file.getMimeType() == MimeType.GOOGLE_APPS_SCRIPT) { // Added
          Drive.Files.update({"parents": [{"id": subFldr.getId()}]}, res.getId()); // Added
        }
    
        s+=Utilities.formatString('%s FilePath:%s/%s/<strong>%s</strong><br />',i,backupFolder.getName(),subFldr.getName(),file.getName());
      }
      s+=Utilities.formatString('Total Files Copied: %s<br /><input type="button" value="Exit" onClick="google.script.host.close();" />',vA.length-1)
      var ui=HtmlService.createHtmlOutput(s).setWidth(600).setHeight(500);
      SpreadsheetApp.getUi().showModelessDialog(ui,'File Backup Complete');
    }