我正在尝试创建文档并设置其访问权限。 以下代码适用于我的普通Gmail帐户。
但是,当我在唯一的GSuite地址上运行它时,它会返回此错误:
TypeError:在对象Document中找不到函数setSharing。 (线 6,文件“代码”)
代码如下:
function createAndSendDocument() {
//Create a new Google Doc named 'Hello, world!'
var doc = DocumentApp.create('Hello World');
//Set user permissions to view and edit.
doc.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
//Access the body of the document, then add a Paragraph.
doc.getBody().appendParagraph('This is a test document for people to see and try and lorem ipsum.');
//Get the URL of the doc
var url = doc.getUrl();
//Get email address of the active user - aka you.
var email = 'example@domain.com';
//Get the name of doc to use as an email subject line
var subject = doc.getName();
//Add a new strong to the url variable to use as an email body.
var body = 'Link to your document: ' + url;
//Send yourself an email with a link to the document.
GmailApp.sendEmail(email, subject, body);
}
如何解决此问题或正确使用setSharing方法?我使用错误的方法还是缺少其他步骤,如
答案 0 :(得分:1)
我从一个非GSuite帐户遇到了这个问题,并通过使用Drive api(而不是Document)来解决了。
例如
var drivedoc = DriveApp.getFileById(documentId);
drivedoc.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
有效,但是当我使用DocumentApp.getFileById
时却没有。
答案 1 :(得分:0)
我自己也遇到了类似的问题,可能会对您有所帮助。我使用DocumentApp api创建了一个文档。然后,我使用DriveApp api设置共享。请注意,您从同一文档获得的URL是不同的。如果您与G Suite组织外部的人通过电子邮件从DocumentApp获取文档的URL,则即使共享设置为“具有链接的任何人,也无需登录”,他们仍必须登录才能打开文档。 ”但是,如果您将从DriveApp获得的URL通过电子邮件发送给G Suite组织外部的人员,则他们无需登录即可轻松打开链接。因此,我认为,如果您使用DriveApp设置所创建文档的共享,则代码可能会更好。然后,确保您通过电子邮件发送从DriveApp api获得的URL,而不是从DocumentApp api获得的URL。
function myFunction() {
var doc = DocumentApp.create("Test Document");
Logger.log("This is the URL that I get with DocumentApp: " + doc.getUrl());
var documentFileID = doc.getId();
var myFileDriveApp = DriveApp.getFileById(documentFileID);
Logger.log("This is the drive app URL: " + myFileDriveApp.getUrl());
//Set the sharing on the file using DriveApp
myFileDriveApp.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
}