gpt4 book ai didi

javascript - 将数组传递给另一个函数

转载 作者:行者123 更新时间:2023-12-03 07:21:02 25 4
gpt4 key购买 nike

我正在尝试更改 Google 云端硬盘中文件的所有权,但我的服务帐户不是该文件的所有者。

 function getDriveFiles(folder, path) {
var folder = DriveApp.getFolderById("0B23heXhtbThYaWdxzMc");
var path = "";
var files = [];
var fileIt = folder.getFiles();
while ( fileIt.hasNext() ) {
var f = fileIt.next();
if (f.getOwner().getEmail() != "service@domain.com")
files.push({owner: f.getOwner().getEmail(), id: f.getId()});
}
return files;
}

所以我的数组看起来像这样:

  var files = [
{owner=jens@domain.com, id=CjOqUeno3Yjd4VEFrYzg},
{owner=jens@domain.com, id=CjOqUYWxWaVpTQ2tKc3c},
{owner=jens@domain.com, id=CjOqUNTltdHo2NllkcWs},
{owner=jens@domain.com, id=CjOqUVTRRMnU2Y0ZJYms},
{owner=jack@domain.com, id=CjOqUXzBmeE1CT0VLNkE},
{owner=aurora@domain.com, id=CjfKj4ur7YcttORkXTn8D2rvGE},
{owner=aurora@domain.com, id=CjOqUY3RFUFlScDBlclk}
]

我需要将此数组传递给的下一个函数是batchPermissionChange,它将批量更改我的服务帐户的所有权。但是我希望它为每个用户运行batchPermissionChange。因此,如果例如jens@domain.com有4个文件,我不希望batchPermissionChange函数被触发4次,我希望它用jens@domain.com触发一次,并包含他的四个文件ID。

function batchPermissionChange(ownerEmail, filesArray){
Do batch job Google... https://www.googleapis.com/batch
}

问题

我如何运行函数batchPermissionChange(ownerEmail, filesArray),例如jens@domain.com及其4个fileId?我可以循环遍历数组,例如“对于数组中的每个项目运行batchPermissionChange”,但这将为用户 jens@domain.com 触发批处理函数 4 次。

最佳答案

当您检索文件列表时,您可以创建一个数组映射,而不是将所有文件推送到一个数组中,映射中的键是所有者,数组是该文件的列表所有者。

function getDriveFiles(folder, path) {
var folder = DriveApp.getFolderById("0B23heXhtbThYaWdxzMc");
var path = "";
var files = {};
var fileIt = folder.getFiles();
while (fileIt.hasNext()) {
var f = fileIt.next();
var owner = f.getOwner().getEmail();
var id = f.getId();

if (owner != "service@domain.com") {
// if the owner doesn't exist yet, add an empty array
if (!files[owner]) {
files[owner] = [];
}

// push the file to the owner's array
files[owner].push(id);
}
}
return files;
}

files 对象最终看起来像这样:

{
'jens@domain.com': ['CjOqUeno3Yjd4VEFrYzg', 'CjOqUYWxWaVpTQ2tKc3c', 'CjOqUNTltdHo2NllkcWs', 'CjOqUVTRRMnU2Y0ZJYms'],
'jack@domain.com': ['CjOqUXzBmeE1CT0VLNkE'],
'aurora@domain.com': ['CjfKj4ur7YcttORkXTn8D2rvGE', 'CjOqUY3RFUFlScDBlclk']
}

现在,在您想要调用 batchPermissionChange 的代码区域中,按如下方式执行操作:

for(var ownerEmail in files) {
if(files.hasOwnProperty(ownerEmail)) {
// NOTE: I'm not sure what the first parameter should be for this, but
// this shows how to send the array of files for just one user at a
// time, so change the first parameter if I got it wrong.
batchPermissionChange(ownerEmail, files[ownerEmail]);
}
}

关于javascript - 将数组传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com