我想从电子表格中的云端硬盘文件中写入一些元数据。我获得了所有者,名称,ID,URL等,但是我在File#getEditors()
和File#getViewers()
方法上遇到了问题。
我将这个值写在编辑器和查看器结果写入的单元格中:
[Ljava.lang.Object @ ....
我的脚本:
function getChildFolders(parentName, parent, data, sheet, listAll) {
sheet.appendRow(["Full Path", "Name", "Type", "URL", "Access", "Permission", "Editors can share", "Owner", "Can edit", "Can comment", "Can view"]);
var childFolders = parent.getFolders();
var childFiles = parent.getFiles();
while (childFiles.hasNext()) {
var fileItem = childFiles.next();
data = [
parentName + "/" + fileItem.getName() + "/" + fileItem.getName(),
fileItem.getName(),
fileItem.getMimeType(),
fileItem.getUrl(),
fileItem.getAccess(Session.getActiveUser()),
fileItem.getSharingPermission(),
fileItem.isShareableByEditors(),
fileItem.getOwner().getEmail(),
fileItem.getEditors(),
fileItem.getViewers()
];
// Write
sheet.appendRow(data);
}
答案 0 :(得分:1)
[Ljava.lang.Object
表示对象。 fileItem.getEditors()
和fileItem.getViewers()
是对象。每个对象都返回User[]
。您可以从中检索以下值。
getDomain()
:获取与用户帐户关联的域名。getEmail()
:获取用户的电子邮件地址。getName()
:获取用户名。getPhotoUrl()
:获取用户照片的URL。例如,如果检索到电子邮件以及编辑者和查看者的姓名,该修改如何?
请进行如下修改。
来自:fileItem.getEditors(),
fileItem.getViewers()
至 :
fileItem.getEditors().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
fileItem.getViewers().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
如果这不是您想要的,请告诉我。我想修改它。
这是使用setValues()
而非appendRow()
的示例修改脚本。 setValues()
的成本低于appendRow()
的成本。那修改又如何呢?
sheet.appendRow(["Full Path", "Name", "Type", "URL", "Access", "Permission", "Editors can share", "Owner", "Can edit", "Can comment", "Can view"]);
var childFolders = parent.getFolders();
var childFiles = parent.getFiles();
var allValues = []; // Added
while (childFiles.hasNext()){
var fileItem = childFiles.next();
data = [
parentName + "/" + fileItem.getName() + "/" + fileItem.getName(),
fileItem.getName(),
fileItem.getMimeType(),
fileItem.getUrl(),
fileItem.getAccess(Session.getActiveUser()),
fileItem.getSharingPermission(),
fileItem.isShareableByEditors(),
fileItem.getOwner().getEmail(),
fileItem.getEditors().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
fileItem.getViewers().map(function(e){return [e.getEmail(), e.getName()]}).join(","),
];
allValues.push(data); // Added
}
sheet.getRange(sheet.getLastRow() + 1, 1, allValues.length, allValues[0].length).setValues(allValues); // Added