2017-02-28 99 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

谢谢,当您发布答案时,我刚刚输完答案。否则不会发布它,而是修改您的答案以包含更改。 。 –

相关问题