我正在尝试将Google云端硬盘中的两页电子表格复制到另一个文件夹。
这是我设法束缚自己的地方;
function clearRange() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Internal copy');
sheet.getRange('B3:B7').clearContent();
sheet.getRange('D3:D5').clearContent();
sheet.getRange('B12:C15').clearContent();
sheet.getRange('B20:C23').clearContent();
sheet.getRange('B28:C31').clearContent();
}
function copySpreadSheet() {
var source = SpreadsheetApp.getActiveSheet();
var sourceName = source.getSheetName();
var sValues = source.getDataRange().getValues();
var destination = SpreadsheetApp.openById('1Mcnlyknqmtf2u_TEhbWxwzYqlxGw39Sno2bOXgkErb4');
source.copyTo('destination')
var destinationSheet = destination.getSheetByName('Copy of '+sourceName)
destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues);
function main() {
copySpreadSheet("Internal Estimate invoice Blundell");
}
请注意,第一位是保存后清除单元格的另一功能。这是我希望我的商店使用的报价模板,而不会弄乱报价。我希望他们输入数据,将其保存为副本,然后将字段重置为零,以备下一次引用。
任何帮助将不胜感激!
****更新********
所以,我已经使它有些工作了。这是我的新代码;
function copySheetValuesV4(){
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheets = sourceSpreadsheet.getSheets();
var destination = SpreadsheetApp.create(sourceSpreadsheet.getName()+' Final');
for (var i = 0; i < sourceSheets.length; i++){
var sourceSheet = sourceSheets[i];
if (!sourceSheet.isSheetHidden()) {
var sourceSheetName = sourceSheet.getSheetName();
var sValues = sourceSheet.getDataRange().getValues();
sourceSheet.copyTo(destination)
var destinationSheet = destination.getSheetByName('Copy of '+sourceSheetName).setName(sourceSheetName);
destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues);// overwrite all formulas that the copyTo preserved */
}
destination.getSheetByName("sheet1").hideSheet() // Remove the default "sheet1" */
}
}
它会在我的/ root文件夹中进行复制,这现在可以了,但是它不会复制任何公式,也不会复制受保护的范围。
有什么想法吗?
答案 0 :(得分:1)
sheet1
的工作表。如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。在此答案中,copySheetValuesV4()
被修改。
此示例脚本的流程如下。
在此模式中,以上流程用作简单脚本。
function copySheetValuesV4() {
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var dst = sourceSpreadsheet.copy(sourceSpreadsheet.getName()+' Final');
var sheets = dst.getSheets();
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].isSheetHidden()) {
dst.deleteSheet(sheets[i]);
}
}
dst.getSheetByName("sheet1").hideSheet();
}
在此模式下,使用上面的流程。并且,为了删除已删除隐藏表格的电子表格的历史记录,将临时电子表格复制为输出电子表格。然后,新的电子表格被移动到特定的文件夹。临时电子表格已移至垃圾箱。
function copySheetValuesV4() {
var folderId = "###"; // Please set the destination folder ID.
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var temp = sourceSpreadsheet.copy("temp");
var sheets = temp.getSheets();
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].isSheetHidden()) {
temp.deleteSheet(sheets[i]);
}
}
temp.getSheetByName("sheet1").hideSheet();
var id = temp.copy(sourceSpreadsheet.getName()+' Final').getId();
var file = DriveApp.getFileById(id);
DriveApp.getFolderById(folderId).addFile(file);
file.getParents().next().removeFile(file);
DriveApp.getFileById(temp.getId()).setTrashed(true);
}
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。