按 Mimetype Google 脚本在多个文件夹中搜索表单

Searching multiple folders for forms by Mimetype Google Scripts

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

我要将两个部门合并在一起,想使用同一个系统。为此,我需要将我的作业组织在一个大文件夹中,而不是一个子文件夹中。这很好并且有效。但是,我的代码在文件夹中按 MimeType 搜索电子表格。当他们将另一个 Google Sheet 添加到文件夹时,我的代码出错了,因为新的 Sheet 是相同的 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);
  }

} }"

我有两个解决方法。

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

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

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