回答

1

對不起,據我所知,沒有這樣做的功能。谷歌應用腳​​本將做到這一點。

我是用手工的方式做的。我創建了一個新工作表並製作了公式/數據的副本。但是如果你在你的公式中使用$,就會有錯誤,讀取工作正常,但是寫起來很痛苦,因爲有些公式,例如與1美元的參考不會寫入表(由於錯誤)。所以你需要將它們切換到A1。你也不能複製字體/顏色等。

我的代碼是用Java來做的,但不容易分割出你需要的位。

1

您可以使用部署爲Web應用程序的Google應用程序腳本。 使用HTTP GET調用Web應用程序來傳輸電子表格ID,要複製的工作表的名稱和新工作表的名稱。以下是我使用的腳本:

function doGet(e) { 

    // get parameter from request (GET HTTP method) 
    var spreadsheetID = e.parameter.spreadsheetID; 
    var targetName = e.parameter.targetName; 
    var sourceSheetName = e.parameter.sheetName; 

    var response = copyWorksheet(spreadsheetID, sourceSheetName, targetName); 

    return ContentService.createTextOutput(response); 
} 


function copyWorksheet(spreadsheetID, templateName, sheetName){ 

    // if there is a spreadsheet ID, find the spreadsheet with this ID 
    if(typeof spreadsheetID == "string"){ 
     spreadsheet = SpreadsheetApp.openById(spreadsheetID); 
    }else{ 
     return "failure; the spreadsheet " + spreadsheetID + " was not found"; 
    } 

    // if there is a template name, find the worksheet with this name and set it as the active sheet; (if there is no name provided, the active worksheet is duplicated) 
    if(typeof templateName == "string"){ 
     template = spreadsheet.getSheetByName(templateName); 
     if(template != null) 
     spreadsheet.setActiveSheet(template); 
    } 

    // duplicate active sheet and set the new sheet as the active sheet 
    newSheet = spreadsheet.duplicateActiveSheet(); 

    // rename the sheet 
    if(typeof sheetName == "string"){ 
     sheetName.setName(sheetName); 
    } 

    return "success;" + sheetName + ";"; 
} 

將此腳本附加到任何電子表格並進行部署。使用稱之爲:

<scriptURL>?spreadsheetID=<spreadsheetID>&targetName=<targetName>&templateName=<sourceSheetName> 
+0

所以我附這個腳本的片材,它部署,並使用所得的URL,使在電子表格上我有一個請求,經由的httplib2.Http()對象在Python,我授權通過帶有正確Google Drive ID,範圍,密鑰等的SignedJWTAssertionCredentials。但是,即使在檢查/試驗了名稱和ID之後,我也得到了404。你知道嗎(比我想象的要好:P)爲什麼會發生這種情況? – nicole