2017-10-05 21 views
1

我在創建可讀取文件名的應用程序腳本時遇到困難,並且從該文件名將文件從myDrive到指定的文件夾。最終,我想創建一個應用程序,讀取PR_P50_MP26_OtherContent.pdf的命名約定,並將該文件放入位於P50文件夾中的PR文件夾中的MP26文件夾中。當我運行腳本時,它會將我的文件發送到錯誤的文件夾。創建一個谷歌應用腳​​本,從myDrive中讀取文件名並將其放在基於文件名的文件夾中

目標:將「PR_P50_MP286_LineLowering_2006_463.pdf」文件移動到P50文件夾下的PR文件夾中。

當我運行代碼時會發生什麼,它會轉到else語句中的測試文件夾。

function MoveFiles(){ 
var files = DriveApp.getRootFolder().getFiles(); 
    while (files.hasNext()) { 

    var file = files.next(); 
    var packagedFile = file.getName(); 
    if (packagedFile.indexOf("PR_P50")) 
    { 
    var destination = DriveApp.getFolderById("PR folder of P50 Folder"); 
    destination.addFile(file); 
    var pull = DriveApp.getRootFolder(); 
    pull.removeFile(file); 
    } 
    else{ 
    var destination = DriveApp.getFolderById("My test Folder"); 
    destination.addFile(file); 
    var pull = DriveApp.getRootFolder(); 
    pull.removeFile(file); 
    } 
    } 
} 

回答

0

沒有與代碼相當多的問題,但你提到的一個錯誤可以通過與

var packagedFile = file.getName() 
+0

感謝的東西。我能夠改變這一點,它將相同的錯誤下移到我的if語句中。我嘗試了幾件事情,例如用.include替換.contains,並在隨後的行中將我的文件更改爲packageFile,但仍然顯示代碼中顯示的相同類型錯誤。 –

0

更換

var packagedFile = file.getname() 

您正在使用getFolderbyId固定這是期待爲給定ID的文件夾。嘗試獲取應該成爲網址一部分的文件夾的ID。您還應該在while循環之外聲明您的文件夾變量。

https://drive.google.com/drive/folders/FOLDERIDHERE

這將ATLEAST能夠得到文件中的正確的文件夾。如果你想按照文件夾名稱來完成,你將不得不打電話getFolderByName("PR folder of p50 folder")這將返回一個fileIterator,所以你將不得不循環,但如果你知道只有1個文件夾名稱,你將能夠設置文件夾爲var folder = folders.next()。無論選擇哪種方式,您現在都應該能夠將文件存入您想要的文件夾中。

function MoveFiles(){ 
var files = DriveApp.getRootFolder().getFiles(); 
var 1stdestination = DriveApp.getFolderById("FOLDERIDHERE"); 
var 2nddestination = DriveApp.getFolderById("FOLDERIDHERE"); 
    while (files.hasNext()) { 

    var file = files.next(); 
    var packagedFile = file.getName(); 
    if (packagedFile.indexOf("PR_P50")) 
    { 

    destination.addFile(file); 
    var pull = DriveApp.getRootFolder(); 
    pull.removeFile(file); 
    } 
    else{ 

    destination.addFile(file); 
    var pull = DriveApp.getRootFolder(); 
    pull.removeFile(file); 
    } 
    } 
} 

我做了類似這裏

var JobFolder = DriveApp.getFolderById('MYFOLDERIDHERE'); 
    //Other stuff here 
    if(!results.isBeforeFirst()){ 
    throw new Error('Job does not exist'); 
    } else { 
    if(jobId in JobFolder.getFilesByName(jobId)) 
    { 
     var ss = SpreadsheetApp.open(jobId); 
     var url = ss.getUrl(); 
     return {url:url, jobId:jobId}; 

    } else 
    { 
     var ss = SpreadsheetApp.create(jobId); 
     ss.insertSheet('Job Materials'); 
     ss.insertSheet('Job Operations'); 
     ss.insertSheet('Job Notes'); 
     ss.insertSheet('Employees Clocked On'); 
     var temp = DriveApp.getFileById(ss.getId()); 
     JobFolder.addFile(temp); 


     var url = ss.getUrl(); 
     return {url:url, jobId:jobId}; 
    } 
    } 
相關問題