2017-02-28 111 views
1

所以我最近發現這個谷歌驅動器腳本,並試圖使用它。 腳本通常應該在我的谷歌驅動器文件夾中獲取文件名和網址,並將它們複製到電子表格中。當我運行我的腳本沒有任何反應

當我點擊運行,我得到沒有錯誤,沒有發生在我的驅動器。

是否有變量我應該改變,使其工作?

PS:我是很新的編碼,似乎無法找出什麼是錯,此代碼

預先感謝您的幫助!

下面是代碼:

function myFunction() { 

    function listFilesInFolder(foldername) { 
    // If we have not been provided a foldername, assume we will interact with user. 
    var interactive = (typeof foldername === 'undefined'); 

    // Get name of folder to list 
    if (interactive) { 
    foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL); 
    } 

    if (foldername === '') return; // No name provided, exit quietly 

    var folders = DriveApp.getFoldersByName(foldername); 
    if (!folders.hasNext()) { 
    if (interactive) Browser.msgBox("Folder not found."); 
    return; 
    } 
    var folder = folders.next(); 
    var contents = folder.getFiles(); 

    var file, data, sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clear(); 

    sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]); 

    // Loop over files in folder, using file iterator 
    while (contents.hasNext()) { 
    file = contents.next(); 

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET" 
     // Skip displaying spreadsheets - I don't know why... 
     continue; 
    } 

    data = [ 
     file.getName(), 
     file.getDateCreated(), 
     file.getSize(), 
     file.getUrl(), 
     //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), 
     file.getDescription(), 
     niceFileType(file.getMimeType()) 
    ]; 

    sheet.appendRow(data); 

    } 
} 

} 
+0

也許你應該首先啓用驅動器API。選中[this](https://developers.google.com/apps-script/articles/google_apis_reading_list#enabling-google-apis-services)。 –

+0

@SangbokLee剛做完了,腳本仍然不能正常工作 – Mk1

+0

您無需啓用Drive API即可使用DriveApp。該腳本是否附加到電子表格中? –

回答

1

兩個問題。這需要在附加到電子表格的腳本中運行,並且您有一個嵌套函數。

您的代碼:

function myFunction() { 
    function listFilesInFolder(foldername) { 
    ... 
    } 
} 

去除外層功能decleration及其匹配關閉托架。代碼將運行。

它應該看起來像:

function listFilesInFolder(foldername) { 
... 
} 
0

在電子表格試試這個修改後的代碼來代替:

function myfunction(){ 
//Declaring the function listFolders to temp 
var temp = function listFolders(foldername) { 
    // If we have not been provided a foldername, assume we will interact with user. 
    var interactive = (typeof foldername === 'undefined'); 

    // Get name of folder to list 
    if (interactive) { 
    foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL); 
    } 

    if (foldername === '') return; // No name provided, exit quietly 

    var folders = DriveApp.getFoldersByName(foldername); 
    if (!folders.hasNext()) { 
    if (interactive) Browser.msgBox("Folder not found."); 
    return; 
    } 
    var folder = folders.next(); 
    var contents = folder.getFiles(); 

    var file, data, sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clear(); 

    sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]); 

    // Loop over files in folder, using file iterator 
    while (contents.hasNext()) { 
    file = contents.next(); 

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET" 
     // Skip displaying spreadsheets - I don't know why... 
     continue; 
    } 

    data = [ 
     file.getName(), 
     file.getDateCreated(), 
     file.getSize(), 
     file.getUrl(), 
     //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), 
     file.getDescription(), 
     file.getMimeType() 
    ]; 

    sheet.appendRow(data); 

    } 
} 
// calls the function listFolders below 
temp() 
} 
+0

我認爲'niceFileType()'是在代碼中的某個地方,但好的電話修復它。 –

+0

謝謝,當您發佈答案時,我剛剛輸完答案。否則不會發布它,而是修改您的答案以包含更改。 。 –

相關問題