2017-02-28 26 views
1

私は最近、このGoogleドライブスクリプトを見つけてそれを使用しようとしました。 スクリプトは通常、Googleドライブのフォルダにファイル名とURLを取得し、スプレッドシートにコピーする必要があります。スクリプトを実行しても何も起こりません

[実行]をクリックするとエラーは発生せず、ドライブに何も起こりません。

変数を変更する必要がありますか?

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を有効にする必要があります。 [こちら](https://developers.google.com/apps-script/articles/google_apis_reading_list#enabling-google-apis-services)をオンにします。 –

+0

@SangbokLeeちょうどやったし、スクリプトがまだ動作していない – Mk1

+0

DriveAppを使用するためにドライブAPIを有効にする必要はありません。このスクリプトはスプレッドシートに添付されていますか? –

答えて

1

2つの問題。これはスプレッドシートに添付されたスクリプトで実行する必要があり、ネストされた機能があります。

あなたコード:

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

ありがとう、私はちょうどあなたが答えを投稿したときに答えを入力し終わった。他の人はそれを投稿しておらず、答えを変更して変更を反映させました。 。 –

関連する問題