2015-04-23 62 views
0

當我使用DriveApp製作現有文件的副本時,DocumentApp無法找到它。DocumentApp找不到剛創建的文件

我的主要目標是向通過複製模板創建的文件添加一些權限。不幸的是,通過使用DriveApp,電子郵件被髮送給用戶。在使用Document API時,這不會發生。

function copyTemplate() { 
    var templateId = "xxxxxxx"; 
    var copy = DriveApp.getFileById(templateId).makeCopy("copy"); 
    var document = DocumentApp.openById(copy.getId()); 
    document.addEditor("[email protected]"); 
} 
+0

您的代碼對我來說工作正常,我所做的只是放入有效的文檔ID。你確定這個模板是一個DOCUMENT而不是一個SPREADSHEET嗎?如果它是電子表格,則需要使用SpreadsheetApp。看[這個答案](http://stackoverflow.com/a/29279546/1677912)。 – Mogsdad

+0

就是這樣。我認爲DOCUMENT是文件的同義詞。謝謝。當您發佈答案時,我可以對其進行投票。 – user2725152

回答

-1

海槽DriveApp它永遠不會發送,你必須與MailApp手動發送電子郵件,或啓用驅動先進的服務,並使用Permission.Insert Apps腳本里面。

+0

問題是,DriveApp將始終發送一封電子郵件。所以我選擇使用DocumentApp,以便不發送電子郵件。但是,源代碼問題是,爲什麼DocumentApp無法找到該文件。 – user2725152

+0

這並不回答這個問題; OP不詢問如何發送電子郵件和分享。 – Mogsdad

1

這兩個電子表格和文檔都有openById()方法,但它們是文件類型特定的。如果您使用DocumentApp.openById(),則必須提供Google文檔的ID,而不是電子表格。

下面是一個可以處理這兩種類型的實用程序。

/** 
* Create a new document or spreadsheet by copying a template, and give editing privileges 
* to the given editor. 
* 
* @param {string} templateId ID of a spreadsheet or google doc, to be used as a template. 
* @param {string} filename  New file name. 
* @param {string} editor  (optional) Email address of user to be given editor privileges. 
*/ 
function copyAndShareTemplate(templateId,filename,editor) { 
    // If no editor provided, assume script owner 
    var editor = editor || Session.getActiveUser().getEmail(); 

    // Make a copy of given template, as filename 
    var copy = DriveApp.getFileById(templateId).makeCopy(filename); 

    // Type-specific handling for spreadsheets & documents 
    var filetype = copy.getMimeType(); 
    switch (filetype) { 
    case MimeType.GOOGLE_DOCS: 
     var document = DocumentApp.openById(copy.getId()); 
     break; 
    case MimeType.GOOGLE_SHEETS: 
     document = SpreadsheetApp.openById(copy.getId()); 
     break; 
    default: 
     throw new Error("Unsupported document type."); 
    } 
    // Add editing permissions to doc or spreadsheet. 
    // Note: the addEditor method exists for both. 
    document.addEditor(editor); 
} 
相關問題