2017-08-29 55 views
0

我有一張名爲First的圖紙,其中包含以下單元格A1(請參見下文)。 我谷歌電子表格的發展過程中手動複製First後,我想重複的單元格A1值爲Second Round,但即使的手動複製和重命名一個Second刷新之後,A1單元格的值是Copy of First Round手動複製圖紙後圖紙識別腳本失敗

我可以改變腳本或其他東西來得到我想要的結果嗎?Second Round

A1:= SHEETNAME()& 「圓」

腳本訪問SHEETNAME:

function sheetname() { 
    var sheetname = SpreadsheetApp.getActiveSheet().getName(); 
      return sheetname; 

} 

回答

1

需要有某種觸發導致功能運行。電子表格中的單元格中的自定義函數只會在()內範圍內的單元發生更改時運行。您可以將其設置爲較大的範圍,只要您不包含公式所在的單元格,因爲這會導致錯誤。然後當細胞改變時你會得到更新。不幸的是,這不包括對工作表名稱更改的引用,例如=getSheetname(Sheet1!B1:Z)中的Sheet1

有些觸發器發生在腳本中,並且可能導致給定的函數運行。 onChange觸發器必須手動應用到一個函數中,這意味着在您編輯它的腳本編輯器編輯 - >當前項目的觸發器。然而,問題在於它不會更新任何單元,除非您在函數中具有更改特定單元的代碼。所以你不會在單元格中有一個函數,但是這在腳本編輯器中,將A13設置到你想要工作表名稱的單元格。一旦進入並且設置了觸發器,更改工作表名稱將更改單元格值。

function getSheetname() { 
    var ss = SpreadsheetApp.getActiveSheet(); 
    var sheetname = ss.getName(); 
    ss.getRange('A13').setValue(sheetname); 
    return; 
} 
+0

我認爲你的答案是一樣的解決方法的東西還不實用。對於我的應用程序,我需要的是當前表格的名稱和上一張表格的名稱,順序依次命名:First,Second,...,Sixth。有這麼幾個我認爲我會**手動**創建一對單元格第二,...,第六個包含它自己的名字和它的前任的名字。我想用戶可以重新排列工作表的標籤,但可能不會重新命名工作表。 – zerowords