1。我有2个电子表格。我们称它们为A和B。
2.A有一张纸,我们称它为X,而B也有一张纸,我们称它为Y。
3.X具有我要复制到Y中的所有信息,例如值,格式,图片(我放入单元格中的信息)
4。因为X中包含图片,所以我不能使用importrange在Y中显示图片,因为它们的传播范围不同,所以我必须使用脚本将其复制到Y中。
5。我的目标是将X复制到Y,而不在B中创建其他工作表。
5。首先,我正在使用类似这样的代码
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可以显示图片,但在Spread B中,我还有其他工作表使用的公式将引用与Y保持在一起。如果删除Y并将Z重命名为Y,我发现每个公式的引用都丢失了!
那么,scripits是否有某种方法只能将X复制到当前存在的Y中而无需创建新工作表?
答案 0 :(得分:0)
注意:此解决方案由@Cooper提供,他在对此问题的评论中建议了可能的答案。该答案已发布为社区Wiki。
要实现您的目标,这对我有用:
X
从A
复制到B
Copy of X
中的B
复制到Y
Copy of X
下面的代码是如何工作的示例。您可以在代码的注释中找到对此的解释:
function myFunction() {
// get spreadsheets A and B
var a = SpreadsheetApp.openById('ID SHEET A');
var b = SpreadsheetApp.openById('ID SHEET B');
// copy sheet X into spreadhseet B
a.getSheetByName('X').copyTo(b);
// copy the values of the cells in the sheet just created in spreadsheet B
var range = b.getSheetByName('Copy of X').getRange(b.getSheetByName('Copy of X').getLastRow(), b.getSheetByName('Copy of X').getLastColumn());
// paste all the content of the sheet X into Y (into the desired range of Y)
range.copyTo(b.getSheetByName('Y').getRange('A1'));
// delete the sheet that was created when passing the information from one spreadsheet to another
b.deleteSheet(b.getSheetByName('Copy of X'));
}
我希望这对您有所帮助。让我知道您是否需要其他任何东西,或者您是否不了解。 :)