這兩個電子表格和文檔都有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);
}
您的代碼對我來說工作正常,我所做的只是放入有效的文檔ID。你確定這個模板是一個DOCUMENT而不是一個SPREADSHEET嗎?如果它是電子表格,則需要使用SpreadsheetApp。看[這個答案](http://stackoverflow.com/a/29279546/1677912)。 – Mogsdad
就是這樣。我認爲DOCUMENT是文件的同義詞。謝謝。當您發佈答案時,我可以對其進行投票。 – user2725152