【问题标题】:Get a list/array of all Google Forms获取所有 Google 表单的列表/数组
【发布时间】:2016-11-01 22:21:53
【问题描述】:

Google Apps 脚本使您能够通过其 ID 或 URL 获取对表单的引用。

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

我想遍历所有名称中包含特定字符串的表单。

我想避免在进行过程中维护所有表单 ID 的列表。表单来来去去,所以我宁愿找到所有的,然后对它们进行迭代。

我已尝试浏览 Google Apps 脚本网站上的所有文档,但找不到任何类型的 list 方法。

如何获得所有可用表格的列表?

【问题讨论】:

标签: google-apps-script google-forms


【解决方案1】:

或者你可以用更简单的方法来做:

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());
 }
}

【讨论】:

    【解决方案2】:
    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;
    };
    

    【讨论】:

    • 很抱歉告诉你这个桑迪,但你的代码有点长,有更好的方法。查看其他答案。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多