2016-06-30 5 views
1

Google Apps Scriptを使用すると、IDまたはURLによってフォームへの参照を取得できます。すべてのGoogleフォームのリスト/配列を取得

https://developers.google.com/apps-script/reference/forms/form-app

私は、その名前に特定の文字列を持っているすべてのフォームを反復処理します。

私はすべてのフォームIDのリストを維持する必要はありません。フォームが出て行くので、私はむしろすべてを見つけ出し、それらを繰り返します。

私はGoogle Apps Scriptサイトのすべてのドキュメントを調べてみましたが、どのような種類の方法でもlistが見つかりませんでした。

利用可能なすべてのフォームのリストを取得するにはどうすればよいですか?

+2

をあなたは 'DriveApp'サービスを使用することができます。 [Apps Script Documentation - タイプ別にファイルを取得する](https://developers.google.com/apps-script/reference/drive/drive-app#getfilesbynamename)タイプには「MimeType.GOOGLE_FORMS」を使用します。 [Apps Script documentation - Mime Type](https://developers.google.com/apps-script/reference/base/mime-type) –

答えて

2

それともあなたはそれを簡単な方法行うことができます:

function allFormFilesWithStringInTitle() { 
// Log the name of every file in the user's Drive that is a form mime type 
// whose name contains "Untitled". 
//var files = DriveApp.searchFiles('title contains "Untitled"'); 
var files = DriveApp.searchFiles('mimeType = "application/vnd.google-apps.form" and title contains "Untitled"'); 

while (files.hasNext()) { 
    var file = files.next(); 
    Logger.log(file.getName()); 
    Logger.log(file.getMimeType()); 
} 
} 
1
function goThroughAllForms() { 
    var formInfo,arrayFormIDs,arrayFormNames,arrayOfIndexNumbers, 
     allFormIDsWithStringInName,i,searchStr,thisID; 

    searchStr = "Untitled"; 

    formInfo= getFilesOfType(); 
    arrayFormNames = formInfo[1]; 
    arrayOfIndexNumbers = searchFormNamesForString(arrayFormNames,searchStr); 

    //Logger.log('searchStr: ' + searchStr) 
    //Logger.log(arrayOfIndexNumbers) 

    allFormIDsWithStringInName = []; 
    arrayFormIDs = formInfo[0]; 

    for (i=0;i<arrayOfIndexNumbers.length;i+=1) { 
    thisID = arrayFormIDs[arrayOfIndexNumbers[i]]; 
    allFormIDsWithStringInName.push(thisID); 
    }; 

    Logger.log(allFormIDsWithStringInName) 
}; 

function getFilesOfType() { 
    var allFormFiles,arrFileName,arrFileID,arrFileUrls,thisFile; 

    allFormFiles = DriveApp.getFilesByType(MimeType.GOOGLE_FORMS); 
    arrFileName = []; 
    arrFileID = []; 
    arrFileUrls = []; 

    while (allFormFiles.hasNext()) { 
    thisFile=allFormFiles.next(); 
    arrFileName.push(thisFile.getName()); 
    arrFileID.push(thisFile.getId()); 
    arrFileUrls.push(thisFile.getUrl()); 
    }; 

    //Logger.log(arrFileName) 
    return [arrFileID,arrFileName]; 
}; 


function searchFormNamesForString(arrayFormNames,searchStr) { 
    var arrayIndexNumbers,i,L,thisName; 

    arrayIndexNumbers = []; 

    L = arrayFormNames.length; 

    for (i=0;i<L;i+=1){ 
    thisName = arrayFormNames[i]; 
    Logger.log(thisName); 
    Logger.log('thisName.indexOf(searchStr): ' + thisName.indexOf(searchStr)); 

    if (thisName.indexOf(searchStr) !== -1) { 
     arrayIndexNumbers.push(i); 
    }; 
    }; 

    return arrayIndexNumbers; 
}; 
+0

このサンディーは、申し訳ありませんが、あなたのコードは長いですし、はるかに良い方法。他の答えを見てください。 –

関連する問題