Google apps script 我编写了一个脚本将文件复制到备份文件夹,但独立的webapp文件会被复制到根目录
有人知道为什么会这样吗?将所有文件复制到目的地会方便得多。我有一个文件名列表,文件ID 3是电子表格,一个是独立脚本,我将其部署为webapp。三个电子表格放在正确的位置。独立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_'
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');
}