2017-06-19 117 views
0

我希望這是獲得一些幫助的地方,可以幫助開發腳本,以便在處理此電子表格時使一些事情更輕鬆。該腳本基本上會將一些東西添加到當前表單中。這裏是我如何手動現在做。複製/重命名錶單並複製/修改公式/插入行的腳本

所以我有一個新的玩家加入....

創建一個新的行表「摘要」。複製一個現有的行(無關緊要),然後將該行中的公式粘貼到新行中。將新玩家標籤鍵入新行的第二個單元格中。複製'模板'表'。將新工作表從新行的第二個單元重新命名爲新玩家標記)。現在我必須回到我在'summary'中創建的新行,將每個公式中的表格名稱更改爲新的玩家標記表,並將單元格ref編號更改爲51,因爲當我從另一行(單元格)複製公式時,它將參考單元增加1.例如:

= AudioAquation61!D51從工作表摘要單元格D4複製到工作表摘要單元格D5 = AudioEquations61!D52。現在我將AudioEquations更改爲新的遊戲者標籤(因此它將引用新的圖紙),並且必須將單元格參考D52更改爲D51。

幾個加號將重新按字母順序排列的遊戲標籤,有一個下拉菜單,上面寫着「加」 ......但我可以從圖中加有一次我讓主腳本制定。

一個單調乏味的工作,特別是當有20多個公式。我已經想出了一些東西,比如製作一個腳本來複制工作表,但是我擔心我還沒有將所有這些功能放在一起的技巧。任何幫助將不勝感激。

謝謝。

編輯:

這裏是我工作的一個副本.....事件

https://docs.google.com/spreadsheets/d/11T1L67M9fr5wUMozN6fegY6gJhhsnSgNvX80CwniSYY/edit?usp=sharing

列表 -

  1. 要求用戶提供新玩家標籤 - 不知道如何編碼。
  2. 在表格「主摘要」中的最後一行上方插入新行
  3. 將新的Gamer標籤插入到新行的單元格B中。
  4. 最後一行到新行的副本公式(公式單元格裁判是絕對的)板材的
  5. 化妝副本「空白」「的空白副本」
  6. 命名新玩家標籤(可能來自新行小區B拉?)
  7. 將表格「Master Summary」的新行中的所有公式更改爲具有新Gamer標籤的工作表。無法弄清楚這一點。例如=空白!D $ 51改爲(新的遊戲者標籤或新行的單元格B中的值)!D $ 51。

這一切都很簡單「手工」,但我試圖讓其他用戶非常簡單。我仍然在學習,但是我得到了一些編碼,例如插入一行並製作一張表的副本,但我無法弄清楚或找到任何有關如何將表格重命名爲單元格值或更改公式ref 。

+0

這聽起來像你希望有人寫完整的腳本爲你.. CYOU應該通過增加一個例子片啓動回答您的問題並提供您已擁有的代碼。然後人們可能會開始指引你朝着正確的方向前進。 –

回答

0

下面是如何從用戶的玩家標籤一個簡單的例子。

function getGamerTag() 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var ui=SpreadsheetApp.getUi(); 
    var resp=ui.prompt('Gamer Tag', 'Please enter your Gamer Tag', ui.ButtonSet.OK); 
    var gamerTag=resp.getResponseText(); 
    return gamerTag; 
} 

只是LASTROW之前插入新行:

function insertRowBeforeLastRow() 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sht=ss.getSheetByName('Master Summary'); 
    var lastRow=sht.getLastRow(); 
    sht.insertRowBefore(lastRow); 
} 

插入在旁邊最後一行小區B新玩家標籤。這可能需要一些調試。

function insertNewGamerTag() 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sht=ss.getSheetByName('Master Summary'); 
    var lastRow=sht.getLastRow(); 
    var gamerTag=getGamerTag(); 
    if(gamerTag) 
    { 
    var rng=sht.getRange(lastRow-1, 2); 
    if(String(rng.getValue()).length==0) 
    { 
     sht.getRange(lastRow-1, 2).setValue(gamerTag); 
    } 
    else 
    { 
     SpreadsheetApp.getUi().alert('Cell B of next to last row already has a value.'); 
    } 
    } 
    else 
    { 
    SpreadsheetApp.getUi().alert('No Gamer Tag Provided in insertNewGamerTag()'); 
    } 
} 

我現在要停下來給你一個機會去實現其中的一些。 好這裏是你的功能:

function copyBlankSheet() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sht = ss.getSheetByName('Blank'); 
    var dest = ss; 
    sht.copyTo(dest); // now rename the sheet 
    var oldname = ss.getSheetByName('Copy of Blank'); 
    oldname.setName('New name'); 
} 

這一次得到了修改,以這一個:

function copyBlankSheet() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sht = ss.getSheetByName('Blank'); 
    var dest = ss; 
    sht.copyTo(dest); // now rename the sheet 
    var oldname = ss.getSheetByName('Copy of Blank'); 
    var newName=ss.getSheetByName('Master Summary').getRange(lastRow-1,2).getValue(); 
    oldname.setName(newName); 
} 
+0

謝謝!他們工作很棒! –

+0

好吧,那麼你現在就試試。嘗試製作一份「空白」表格並根據需要重新命名。您可能需要閱讀[documentation here](https://developers.google.com/apps-script/reference/spreadsheet/sheet)。大部分信息將出現在工作表,範圍或電子表格頁面中。 – Cooper

+0

問題:我錯過了什麼?試圖在插入遊戲者標記代碼之前將插入新行併入插入遊戲者標記代碼,但它一直返回「最後一行旁邊的單元格B已具有值」。 –