簡體   English   中英

使用第三張工作表中的單元格值將Google工作表復制到新工作表中

[英]Copy Google sheet to a new sheet using cell value from 3rd sheet

我一直在瀏覽論壇,試圖尋找正確的方法來實現此目的,但我似乎無法正確地做到這一點。 這是我第一次使用Google Apps腳本,因此我正在學習。

這就是我想要做的。

1)我想將舊工作表的所有內容復制到新工作表中。 該腳本將通過引用“統計”工作表中的單元格b17來確定現有工作表名稱,並將復制舊工作表,包括值格式,引用和公式。 重復的工作表將從“統計”工作表的單元格c17中命名。

2)如果可能的話,我還要使舊表刪除所有引用,並在創建新表后保留值和格式。 與全部復制和ctrl-shift-v相似,不同之處在於自動完成一次復制。

這是我目前擁有的代碼,不確定是否正確

  function newSheetLast() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var first = ss.getSheetByName("Statistics").activate();
  var oldSheetName = ss.getRange('b17').getDisplayValue();
  var newSheetName = ss.getRange('c17').getDisplayValue();
  var sheet = ss.getSheetByName(oldSheetName).activate();
  var source = SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(newSheetName);
};

嘗試執行1時,我陷入了困境。嘗試了copyTo並可以復制工作表,但是當我復制到新工作表時,將丟失所有格式和公式。

我不確定如何嘗試2

您的變量命名和重復工作表的工作方式有些混亂。 您確實應該能夠直接復制工作表對象,或者至少能夠嘗試提供您要復制的工作表的名稱,但是不能,它在電子表格級別並且僅在活動工作表上起作用。

復制工作表包含公式和格式。 可以使用setValues(getValues)完成靜態值的覆蓋。

function newSheetLast() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var settings = ss.getSheetByName("Sheet1");
  var oldSheetName = settings.getRange('B17').getDisplayValue();
  var oldSheet = ss.getSheetByName(oldSheetName);
  var newSheetName = settings.getRange('C17').getDisplayValue();
  ss
      .getSheetByName(oldSheetName)
      .activate()
      .getParent()
      .duplicateActiveSheet()
      .setName(newSheetName);

  oldSheet.getDataRange().setValues(oldSheet.getDataRange().getValues());
};

暫無
暫無

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

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