【问题标题】:Searching multiple folders for forms by Mimetype Google Scripts通过 Mimetype Google 脚本在多个文件夹中搜索表单
【发布时间】:2021-01-12 17:13:34
【问题描述】:

我有一个系统,我将一系列工作票保存在一个文件夹中。然后,我有两个脚本可以在该文件夹中搜索,查看每个工作票,提取某些信息,然后将其放入时间表计算器或空缺职位列表中。

我将两个部门合并在一起,并希望使用同一个系统。为此,我需要不是在一个大文件夹中组织我的工作,而是作为子文件夹。这很好并且有效。但是,我的代码在文件夹中按 MimeType 搜索电子表格。当他们将另一个 Google 表格添加到该文件夹​​时,我的代码会出错,因为新表格是相同的 MimeType,但没有相同的搜索格式。

有没有办法在不改变用户行为的情况下解决这个问题?所有工作票都有类似的格式:站点名称、3-4 字描述、票号。我想不出一种方法可以将它放在可搜索的词条上,这就是我选择 MimeType 的原因。

这是迄今为止有效的方法。它适用于时间表,但其他脚本的工作方式相同。

function OpenJobs() {

var ss = SpreadsheetApp.getActive()
var parentFolder = DriveApp.getFolderById("Open Folder");
var childFolders = parentFolder.getFolders();
while(childFolders.hasNext()) {
  var child = childFolders.next();
  Logger.log(child.getName());

var sheet = ss.getSheetByName("Scripts");

var files = child.getFilesByType(MimeType.GOOGLE_SHEETS)

var array=[];

while (files.hasNext()) {

  var file = files.next()
  var filelog = file.getUrl()
  var tickets = SpreadsheetApp.openById(file.getId())
  var dataTickets = tickets.getSheetByName("Form").getDataRange().getValues();

  var ticketno = dataTickets[0][1];
  var jobname = dataTickets[0][3];
  
  var worker1 = dataTickets[26][0];
  var workhours1 = dataTickets[26][2];
  var workdate1 = dataTickets[26][4];
  
  var worker2 = dataTickets[27][0];
  var workhours2 = dataTickets[27][2];
  var workdate2 = dataTickets[27][4];      
  
//and so on for 10 lines
  
  array.push([ticketno,jobname,worker1,workhours1,workdate1]);
  array.push([ticketno,jobname,worker2,workhours2,workdate2]);
//and so on for 10 lines
 }

if(array[0]){
  sheet.getRange(sheet.getLastRow()+1,1,array.length,5).setValues(array);
  }

} }"

【问题讨论】:

    标签: google-apps-script google-sheets iteration mime-types


    【解决方案1】:

    我有两种解决方法。

    1. 使用Spreadsheet.getName()检查文件名。
    • 如果您的表单具有指定的文件名格式,您可以根据文件名验证当前工作表是否是您预期的表单。
    1. 使用Spreadsheet.getSheetByName() 时检查工作表“表单”是否存在。如果找不到工作表,它应该返回 null

    var sheet = tickets.getSheetByName("Form");
    if (sheet) {
       //Do something
    }
    

    您还可以使用Sheet.getFormUrl() 来验证当前工作表是否链接到表单。如果它没有关联的表单,它应该返回一个null

    【讨论】:

    • 我觉得自己像个白痴。 IF 函数来查看是否有一个具有该名称的工作表,否则继续下一个工作表完全符合我的需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多