簡體   English   中英

使用谷歌工作表腳本時,如何將電子表格的工作表復制到另一個電子表格中而不創建新的工作表副本?

[英]How to copy spreadsheet's sheet into another spreadsheet without creating a new sheet copy when using google sheet script?

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 BI 中還有其他工作表使用將引用保留為 Y 的公式。如果我刪除 Y 並將 Z 重命名為 YI,我發現每個公式的引用都丟失了!

那么,腳本是否有某種方法只能將 X 復制到當前存在的 Y 中而不創建新表?

解決方案

注意:此解決方案是由@Cooper 提供給您的,他在此問題的評論中建議了可能的答案。 此答案作為社區維基發布。

為了實現您的目標,這對我有用:

  1. 將您的工作表XA復制到B
  2. B Copy of X副本中的所有內容Copy of XY
  3. 刪除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')); }

我希望這對你有幫助。 如果您需要其他任何東西或者您不理解某些東西,請告訴我。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM