我有以下脚本,当运行结束时,我想将该电子表格的副本复制到名称为+日期的特定文件夹中,例如:
我有一个名为“审核”的电子表格,当最后一些特定的脚本运行时,我想将电子表格的副本复制到文件夹root / Audit / Historic到谷歌驱动程序或谷歌文档。
注意:root是google驱动程序或google docs顶级文件夹。
脚本:
function ShellCopyValues(){
var sheets = ['sheet1','sheet2','sheet3','sheet4','sheet4'];
for (var s in sheets){
CopyRows(sheets[s]);
}
}
function CopyRows(uname) {
var source = SpreadsheetApp.openById('XXXXXX');
var sourcesheet = source.getSheetByName(uname);
var target = SpreadsheetApp.openById('YYYYYY');
var targetsheet = target.getSheetByName(uname);
var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
targetrange.setValues(rangeValues);
}
在这个脚本的最后,我想复制一份。
如果有人知道我该怎么做,我将不胜感激。
该脚本会将文件保存到文件夹中。 (不会出现在根“我的司机”中)
//This part make a copy of the spreadsheet
var SSID = 'XXXXXX'
var CopyDate = Utilities.formatDate(new Date(), "GMT-3", "ddMMyyyyHHmm"); // Function Date + Format
var folder = DocsList.getFolder('Historic'); //Use this line if you want to get the folder by name
//--> var folder = DocsList.getFileById('YYYYY'); //Use this line if you want to get the folder by ID
var backup = DocsList.getFileById(SSID).makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate);
backup.addToFolder(folder); //This line will be move the folder
backup.removeFromFolder(DocsList.getRootFolder()); //This line is needed to remove the Filde from the Root
答案 0 :(得分:1)
使用DriveApp
...使用getFileById(id)
获取文件,然后使用makeCopy(name)
然后
使用DocsList
...使用getFileById(id)
获取文件,然后使用addToFolder(folder)
我认为addtofolder
中没有DriveApp
,DocsList
和DriveApp
中的文件对象不一样
答案 1 :(得分:0)
特别使用addToFolder(parent),removeFromFolder(parent)和getParents()。
尝试:
...
var folder = DocsList.getFolder('Historic');
var backup = DocsList.getFileById(SSID).makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate);
var deleteFromFolder = backup.getParents()[0];
backup.addToFolder(folder);
backup.removeFromFolder(deleteFromFolder);
...