Google apps script 如何使用google脚本将电子表格复制到google drive中的特定文件夹中
我有以下脚本,当运行结束时,我想将该电子表格复制到一个名为+日期的特定文件夹中,例如: 我有一个名为“审计”的电子表格,当一些特定的脚本在最后运行时,我想将电子表格复制到root/Audit/Historic文件夹中,然后复制到googledriver或googledocs中 注意:root是google驱动程序或google文档的顶级文件夹 脚本:Google apps script 如何使用google脚本将电子表格复制到google drive中的特定文件夹中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有以下脚本,当运行结束时,我想将该电子表格复制到一个名为+日期的特定文件夹中,例如: 我有一个名为“审计”的电子表格,当一些特定的脚本在最后运行时,我想将电子表格复制到root/Audit/Historic文件夹中,然后复制到googledriver或googledocs中 注意:root是google驱动程序或google文档的顶级文件夹 脚本: function ShellCopyValues(){ var sheets = ['sheet1','sheet2','sh
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);
}
在这个脚本的末尾,我想复制一份
如果有人知道我该怎么做,我将不胜感激
编辑:08/07/2013(固定)
- 脚本将使用此格式(文件名+日期)制作副本
- 脚本将把文件保存到一个文件夹中。(不会出现在根目录“我的驱动程序”中)
DriveApp
。。。使用getFileById(id)
获取文件,然后使用makeCopy(name)
然后
使用DocsList
。。。使用getFileById(id)
获取文件,然后使用addToFolder(文件夹)
我认为在
DriveApp
中没有addtofolder
,而DocsList
和DriveApp
中的文件对象也不相同。。。使用getFileById(id)
获取文件,然后使用makeCopy(name)
然后
使用DocsList
。。。使用getFileById(id)
获取文件,然后使用addToFolder(文件夹)
我认为在DriveApp
中没有addtofolder
,而DocsList
和DriveApp
中的文件对象也不相同,尤其是
尝试:
特别使用,以及
尝试:
您好,您有任何示例脚本来执行此操作吗?William the ShellCopyValues()+CopyRows打开工作表一次,但脚本CopyRows会为每个工作表运行,这样脚本会创建同一工作表的4个副本。。1表格1更新后,其他表格2更新后,其他表格3和表格4I了解该程序应打开两个电子表格,迭代表格以复制和创建备份。在每次迭代的代码中,要复制工作表、打开两个电子表格并生成备份,您可能需要对该部分进行一点更改。我已修复该问题,请再次查看编辑。我将代码移到脚本SheelCopyValue()的末尾。-William,我发现一个问题,脚本未将电子表格移动到文件夹Historical,正在从根目录名为“我的驱动程序”共享到Historical。您好,您有任何示例脚本来执行此操作吗?William the ShellCopyValue()+CopyRows打开工作表一次,但脚本CopyRows会为每个工作表运行,这样脚本会创建同一工作表的4个副本。。1表格1更新后,其他表格2更新后,其他表格3和表格4I了解该程序应打开两个电子表格,迭代表格以复制和创建备份。在每次迭代的代码中,要复制工作表、打开两个电子表格并生成备份,您可能需要对该部分进行一点更改。我已修复该问题,请再次查看编辑。我移动了脚本SheelCopyValue()末尾的代码。-William,我发现一个问题,脚本未移动到电子表格文件夹Historical,正在从根目录名为“我的驱动程序”共享到Historical。请查看我的编辑?谢谢此外,我不知道如何告诉脚本我要将该副本保存在哪里(文件夹)。脚本正在根目录中创建副本,但我现在只想保存一个问题。。。当脚本运行create 4 copy时,我只想在所有工作表更新后创建副本。我修复了该问题,请再次查看编辑。我移动了脚本SheelCopyValue()结尾的代码。如果,我发现一个问题,脚本没有将电子表格移动到文件夹Historic,而是从根目录名为“我的驱动程序”共享到Historic<这意味着所有副本都在根目录“我的驱动程序”中,并在历史文件夹中共享。请查看我的编辑?谢谢此外,我不知道如何告诉脚本我要将该副本保存在哪里(文件夹)。脚本正在根目录中创建副本,但我现在只想保存一个问题。。。当脚本运行create 4 copy时,我只想在所有工作表更新后创建副本。我修复了该问题,请再次查看编辑。我移动了脚本SheelCopyValue()结尾的代码。如果,我发现一个问题,脚本没有将电子表格移动到文件夹Historic,而是从根目录名为“我的驱动程序”共享到Historic
这意味着所有副本都在根“My Driver”中,并表示在历史文件夹中共享。在方法ShellCopyValues中,打开电子表格只应发生一次()并将所选表格('sheet1'、'sheet2'、'Sheet3'…)作为参数传递给方法CopyRows(sourcesheet、targetsheet)。实际上,在方法ShellCopyValues中打开电子表格只应发生一次()并将所选图纸('sheet1'、'sheet2'、'Sheet3'…)作为参数传递给方法CopyRows(sourcesheet、targetsheet)。
//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
...
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);
...