2016-03-24 10 views
0

Hizmet hesabımın dosya sahibi olmadığı Google Drive'daki dosyaların sahipliğini değiştirmeye çalışıyorum.Diziyi başka bir işleve geçirin

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() != "[email protected]") 
     files.push({owner: f.getOwner().getEmail(), id: f.getId()}); 
    } 
    return files; 
} 

Yani benim dizi şöyle görünür: ben bu diziyi iletmeniz gereken

var files = [ 
    {[email protected], id=CjOqUeno3Yjd4VEFrYzg}, 
    {[email protected], id=CjOqUYWxWaVpTQ2tKc3c}, 
    {[email protected], id=CjOqUNTltdHo2NllkcWs}, 
    {[email protected], id=CjOqUVTRRMnU2Y0ZJYms}, 
    {[email protected], id=CjOqUXzBmeE1CT0VLNkE}, 
    {[email protected], id=CjfKj4ur7YcttORkXTn8D2rvGE}, 
    {[email protected], id=CjOqUY3RFUFlScDBlclk} 
    ] 

Sonraki fonksiyonu yığın benim hizmet hesabına sahipliğini değişecek olan batchPermissionChange olduğunu. Ancak ben kullanıcı başına batchPermissionChange çalıştırmak istiyorum. Yani, [email protected], 4 dosya içeriyorsa, batchPermissionChange işlevinin 4 kez tetiklenmesini istemiyorum, [email protected] ile bir kez tetiklemesini ve dört dosya kimliğini içermesini istiyorum.

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

Soru

Nasıl onun 4 FileID yıllardan ile örneğin [email protected] için birlikte işlev batchPermissionChange (owneremail filesArray) çalıştırabilirim? Dizi dizisi boyunca, 'dizi dizi batchPermissionChange' için olduğu gibi döngü yapabilirim, ancak bu [email protected] kullanıcısı için toplu işlevi 4 kez tetikleyecektir.

+0

sorun nedir? Ne ile sorun yaşıyorsun? Aslında bir soru sormuyorsun. – forgivenson

+0

Soruyu güncelledik. –

cevap

1

Dosya listesini aldığınızda, tüm dosyaları tek bir diziye eklemek yerine, haritadaki anahtarların sahip olduğu dizilerle ve diziler için dosyaların listesi olan bir dizi dizisi oluşturabilirsiniz. bu sahip. böyle yapmak,

{ 
    '[email protected]': ['CjOqUeno3Yjd4VEFrYzg', 'CjOqUYWxWaVpTQ2tKc3c', 'CjOqUNTltdHo2NllkcWs', 'CjOqUVTRRMnU2Y0ZJYms'], 
    '[email protected]': ['CjOqUXzBmeE1CT0VLNkE'], 
    '[email protected]': ['CjfKj4ur7YcttORkXTn8D2rvGE', 'CjOqUY3RFUFlScDBlclk'] 
} 

Şimdi, batchPermissionChange aramak istediğiniz kodunuzun alanında:

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 != "[email protected]") { 
     // 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 nesne böyle bir şey seyir sona erecek

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]); 
    } 
} 
+0

Tam olarak böyle bir şey aradığım şey. Önerinizi denedim, ancak dizi daha önce yaptığı gibi görünüyor. Dizi aynı mı görünüyor yoksa herhangi bir görsel değişiklik görmeli mi? –

+0

Çok farklı olmalı. Cevabımı bir örnekle güncelledim. – forgivenson

+0

Görüyorum, belki dosya dizisini gönderdiğim son kısım yanlış, "var sahibi" ile tam olarak emin değilim. ve "ownerEmail". –