2016-06-30 1 views
1

Скрипт Google Apps дает вам возможность получить ссылку на форму по ее идентификатору или по его URL-адресу.Получить список/массив всех форм Google

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

Я хочу, чтобы перебрать все формы, которые имеют определенную строку в его названии.

Я хочу избежать необходимости вести список всех идентификаторов формы, когда я иду. Формы приходят и уходят, и поэтому я предпочел бы найти все и повторить их.

Я пробовал просматривать все документы на сайте Google Apps Script и не могу найти метод list любого типа.

Как я могу получить список всех доступных форм?

+2

Вы можете использовать 'DriveApp' Service. [Документация сценариев приложений - получение файлов по типу] (https://developers.google.com/apps-script/reference/drive/drive-app#getfilesbynamename) Используйте тип MimeType.GOOGLE_FORMS для этого типа. [Документация по сценарию для приложений - 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

Извините, что сказал вам этот Сэнди, но ваш код длинный, и есть гораздо лучше. См. Другой ответ. –