这两个电子表格和文档都有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