Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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

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 复制活动工作表中的范围,使用自定义名称创建新电子表格,粘贴范围_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 复制活动工作表中的范围,使用自定义名称创建新电子表格,粘贴范围

Google apps script 复制活动工作表中的范围,使用自定义名称创建新电子表格,粘贴范围,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我最近编写了我的第一个谷歌应用程序脚本,它制作了一份电子表格(包括该电子表格中的所有选项卡),并将其放入用户驱动器中的特定文件夹中。副本将根据原始电子表格中的单元格值重命名。以下是我的脚本,供参考: function copyDocument() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // Get current active spreadsheet. var id = ss.getId(); // Get current activ

我最近编写了我的第一个谷歌应用程序脚本,它制作了一份电子表格(包括该电子表格中的所有选项卡),并将其放入用户驱动器中的特定文件夹中。副本将根据原始电子表格中的单元格值重命名。以下是我的脚本,供参考:

function copyDocument() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Get current active spreadsheet.
var id = ss.getId(); // Get current active spreadsheet ID.
var sstocopy = DriveApp.getFileById(id); // Get spreadsheet with DriveApp.
var sheet = ss.getActiveSheet(); // Get current active sheet.
var sheet_name = sheet.getRange("B1").getValue(); // Get the value of cell B1, used to name the new spreadsheet.
var folder_name = sheet.getRange("C23").getValue(); // Get the target folder ID.
var folder = DriveApp.getFolderById(folder_name); // Get the ID of the folder where you will place a copy of the spreadsheet.
sstocopy.makeCopy(sheet_name,folder); // Make a copy of the spreadsheet in the destination folder.
}
这个脚本可以工作,但我被要求修改它,因为我编写的脚本复制了不必要的选项卡和数据,这会给用户带来混乱

新脚本应在特定工作表中复制特定范围,创建新的电子表格,并将该范围粘贴到其中。它还应该以范围内的单元格值命名自己

然而,我遇到的唯一一种专门将工作表复制到新电子表格的方法是copyTo(电子表格)。但是,《谷歌应用程序脚本指南》指定默认情况下“复制的工作表将命名为‘复制[原始名称]”

我希望能够在特定单元格后重命名复制的工作表。我的问题是,我可以使用copyTo(电子表格)并基于单元格为新电子表格指定自定义名称吗


谢谢

您需要从特定的工作表中获取数据,以便将其复制到变量中,使用:

var sourceSheet = ss.getSheetByName("Sheet1");
var sourceData = sourceSheet.getDataRange().getValues();
var originalRangeNotation = sourceSheet.getDataRange().getA1Notation();
然后,您需要创建一个新的空文件,并创建一个同名的工作表

var ssNew = SpreadsheetApp.create("My New File Name");
ssNew.insertSheet('My New Sheet');
然后将保存的数据中的内容添加到新文件中。由于insertSheet使新工作表成为活动工作表,因此我们使用:

var sheetNew = ssNew.getActiveSheet();
var rangeNew = sheet.getRange(originalRangeNotation);
range.setValues(sourceData);

您需要从特定工作表中获取数据,然后使用以下方法将其复制到变量:

var sourceSheet = ss.getSheetByName("Sheet1");
var sourceData = sourceSheet.getDataRange().getValues();
var originalRangeNotation = sourceSheet.getDataRange().getA1Notation();
然后,您需要创建一个新的空文件,并创建一个同名的工作表

var ssNew = SpreadsheetApp.create("My New File Name");
ssNew.insertSheet('My New Sheet');
然后将保存的数据中的内容添加到新文件中。由于insertSheet使新工作表成为活动工作表,因此我们使用:

var sheetNew = ssNew.getActiveSheet();
var rangeNew = sheet.getRange(originalRangeNotation);
range.setValues(sourceData);

谢谢。我最终用它代替sstocopy.makeCopy()


谢谢。我最终用它代替sstocopy.makeCopy()


这看起来不对
var folder_name=sheet.getRange(“C23”).getValue();//获取目标文件夹ID.var folder=DriveApp.getFolderById(文件夹名称)似乎您使用了文件夹id的名称,但这不起作用。似乎makeCopy(名称,目标)正是您想要的。makeCopy(名称,目标)非常理想,因为您可以实际使用它来指定复制文件的名称。但是,我不想复制整个电子表格。我只想复制一系列单元格,创建一个新的电子表格,然后根据需要重命名它。我找到的方法copyTo(电子表格)可以将一个范围复制到一个新的电子表格中,但不允许我重命名新文件。好吧,我想你必须创建自己的函数,然后这看起来不对
var folder_name=sheet.getRange(“C23”).getValue();//获取目标文件夹ID.var folder=DriveApp.getFolderById(文件夹名称)似乎您使用了文件夹id的名称,但这不起作用。似乎makeCopy(名称,目标)正是您想要的。makeCopy(名称,目标)非常理想,因为您可以实际使用它来指定复制文件的名称。但是,我不想复制整个电子表格。我只想复制一系列单元格,创建一个新的电子表格,然后根据需要重命名它。我找到的方法copyTo(电子表格)可以将一个范围复制到一个新的电子表格中,但不允许我重命名新文件。好吧,我想你必须创建自己的函数,谢谢。最后我用它来代替sstocopy.makeCopy()
code
folder.addFile()new\u sheet.getActiveSheet().getRange(“X:Y”).setValues(sheet.getRange(“X:Y”).getValues()。DriveApp.getRootFolder().removeFile(临时)谢谢。最后我用它来代替sstocopy.makeCopy()
code
folder.addFile()new\u sheet.getActiveSheet().getRange(“X:Y”).setValues(sheet.getRange(“X:Y”).getValues()。DriveApp.getRootFolder().removeFile(临时)