Google apps script 如何复制电子表格';使用google工作表脚本时,是否将工作表复制到另一个电子表格中而不创建新的工作表副本?
1.我有两张电子表格。我们叫他们A和B吧 A有一张纸,我们称之为X,而B也有一张纸,我们称之为Y 3.X包含我想复制到Y中的所有信息,例如值、格式、图片(我放在单元格中) 4.因为X中有图片。所以我不能使用importrange来获取Y中的图片显示,因为它们在不同的排列中,所以我必须使用脚本将其复制到Y中 5.我的目标是将X复制到Y,而不在B中创建其他图纸 5.起初,我使用的代码如下Google apps script 如何复制电子表格';使用google工作表脚本时,是否将工作表复制到另一个电子表格中而不创建新的工作表副本?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,1.我有两张电子表格。我们叫他们A和B吧 A有一张纸,我们称之为X,而B也有一张纸,我们称之为Y 3.X包含我想复制到Y中的所有信息,例如值、格式、图片(我放在单元格中) 4.因为X中有图片。所以我不能使用importrange来获取Y中的图片显示,因为它们在不同的排列中,所以我必须使用脚本将其复制到Y中 5.我的目标是将X复制到Y,而不在B中创建其他图纸 5.起初,我使用的代码如下 function CopySheet() { var ss = SpreadsheetApp.open
function CopySheet() {
var ss = SpreadsheetApp.openById("A's ID"); //Get spread A
var cs = SpreadsheetApp.getActiveSpreadsheet(); //Get spread B
var sourceSheet = ss.getSheetByName("X's name"); //Get sheet X
sourceSheet.copyTo(cs); //Copy X into B (create a new sheet Z)
}
虽然新创建的工作表Z可以显示图片,但在排列B中,我有其他工作表使用公式将参考值保留在Y中。如果我删除Y并将Z重命名为Y,我发现每个公式的参考值都丢失了
那个么,有并没有办法在不创建新工作表的情况下,将X复制到当前存在的Y中
注:此解决方案由@Cooper提供,他在对该问题的评论中提出了可能的答案。此答案作为社区维基发布
为了实现你的目标,这对我来说很有用:
X
从A
复制到B
B
中X的副本中的所有内容复制到Y
函数myFunction(){
//获取电子表格A和B
var a=电子表格app.openById(“ID表a”);
var b=电子表格app.openById(“ID表b”);
//将表格X复制到电子表格B中
a、 getSheetByName('X')。copyTo(b);
//复制刚在电子表格B中创建的工作表中的单元格值
var range=b.getSheetByName('X的副本').getRange(b.getSheetByName('X的副本').getLastRow(),b.getSheetByName('X的副本').getLastColumn());
//将工作表X的所有内容粘贴到Y中(粘贴到所需的Y范围内)
range.copyTo(b.getSheetByName('Y')。getRange('A1'));
//删除在将信息从一个电子表格传递到另一个电子表格时创建的工作表
b、 deleteSheet(b.getSheetByName(“X的副本”);
}
解决方案
注:此解决方案由@Cooper提供,他在对该问题的评论中提出了可能的答案。此答案作为社区维基发布
为了实现你的目标,这对我来说很有用:
X
从A
复制到B
B
中X的副本中的所有内容复制到Y
函数myFunction(){
//获取电子表格A和B
var a=电子表格app.openById(“ID表a”);
var b=电子表格app.openById(“ID表b”);
//将表格X复制到电子表格B中
a、 getSheetByName('X')。copyTo(b);
//复制刚在电子表格B中创建的工作表中的单元格值
var range=b.getSheetByName('X的副本').getRange(b.getSheetByName('X的副本').getLastRow(),b.getSheetByName('X的副本').getLastColumn());
//将工作表X的所有内容粘贴到Y中(粘贴到所需的Y范围内)
range.copyTo(b.getSheetByName('Y')。getRange('A1'));
//删除在将信息从一个电子表格传递到另一个电子表格时创建的工作表
b、 deleteSheet(b.getSheetByName(“X的副本”);
}
我认为答案是,你必须将A中的X复制到B,然后使用copyTo将范围从B中的X(复制)移动到y,完成后,你可以删除B中的X(复制)。我认为答案是,你必须将A中的X复制到B,然后使用copyTo将范围从B中的X(复制)移动到y,完成后,你可以删除X(复制)谢谢你,兰德沃尔夫!您的意见非常有用。但是我发现行var range=b.getSheetByName('X的副本').getRange(b.getSheetByName('X的副本').getLastRow(),b.getSheetByName('X的副本').getLastColumn());这只返回1个单元格,所以我使用getDataRange,它对我来说非常有效,非常感谢!谢谢Randwolf!您的意见非常有用。但是我发现行var range=b.getSheetByName('X的副本').getRange(b.getSheetByName('X的副本').getLastRow(),b.getSheetByName('X的副本').getLastColumn());这只返回1个单元格,所以我使用getDataRange,它对我来说非常有效,非常感谢!