2017-03-28 34 views
0

我正在學習有關Google Scripts和Javascripts的過程,我喜歡編碼解決方案,但需要了解更多信息,因此有些緩慢。將腳本保存到文件的Google腳本

我知道如何在谷歌文檔中使用腳本,但我不知道如何構建很多東西,我正在從示例中學習,並試圖從我發現的東西中瞭解。

我有一個場景,我有一個谷歌表格,我想用作模板,這樣用戶可以在所有字段中輸入數據,然後點擊一個按鈕將整個表格保存爲一個文件(與將文件>另存爲),但在保存時使用字段中的ID號作爲文檔的名稱,並將它們放置在與主模板相同的目錄中的文件夾中。點擊保存按鈕後,工作表需要重置爲原來的狀態,以備其他輸入。

用戶可以打開保存的文檔並根據需要進行更改。

我一直沒能找到的例子,我很能理解,使他們工作,所以任何幫助將是巨大的,甚至指針資源將使我更容易學習

感謝。

+1

你的問題是一般的堆棧溢出。如果您想要了解如何使用Apps Script進行操作的一般建議,請嘗試[Apps Script Group](https://plus.google.com/communities/102471985047225101769) –

+0

如果我的答案與您需要的內容匹配,也許您可​​以「接受「它。 – Carr

回答

1

首先,在您的驅動器中創建一個名爲MyTargetFolder的文件夾。將您的模板電子表格放入,填入「ID」作爲一個字段的第一行,任何數值作爲第二行的值。

你所需要的所有腳本都低於:

// create a custom menu to add Save feature. 
function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    ui.createMenu('Feature') 
    .addItem('Save Spreadsheet', 'saveSpreadSheet') 
    .addToUi(); 
} 

然後實現保存功能。

function saveSpreadSheet() { 

    var thisSpreadSheet = SpreadsheetApp.getActive(); 

    /* 
    What first row and second row look like : 
     ----- 
     | ID | 
     ----- 
     | 123 | 
     ----- 
    */ 
    var id = thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).getValue(); 

    var folders = DriveApp.getFolders(); 
    var destFolder = ''; 
    while (folders.hasNext()) { 
    var folder = folders.next(); 
    if (folder.getName() == 'MyTargetFolder') { 
     destFolder = DriveApp.getFolderById(folder.getId()); 
    } 
    } 

    DriveApp.getFileById(thisSpreadSheet.getId()).makeCopy(id, destFolder); 

    // recover the template 
    thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).setValue(' '); 

    SpreadsheetApp 
    .getUi() 
    .alert('Check your Drive to make sure file have been saved'); 
} 

所有關於電子表格的Google應用腳本API都有詳細記錄here

和API約Drive

相關問題