You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google Apps Script获取Google Drive中两类文件的最新ID

用Google Apps Script分别获取Drive中两类文件的最新版本ID

我每小时会收到两个分别名为call log和sms log的XML文件,需要通过Google Apps Script获取这两类文件各自最新版本的ID。现有脚本只能获取文件夹中所有文件里的单个最新文件,无法区分文件类型,因此需要修改脚本实现分类获取最新文件的功能——分别扫描所有名称以call开头的文件,获取其中最新的call文件ID;同理获取最新的sms文件ID。

原单个最新文件的代码

function NewestFile()
{

var folder = DriveApp.getFolderById('###');
var fi = folder.getFiles();
var lastUpdatedFile = null;

while(fi.hasNext()){
 if(!lastUpdatedFile){ //Checks if we didn't assign anything to lastUpdatedFile
   lastUpdatedFile = fi.next();
 }else{
  var currentFile = fi.next();
  if(lastUpdatedFile.getLastUpdated() < currentFile.getLastUpdated()){
    lastUpdatedFile = currentFile;
  }
 }
}
   
     return [lastUpdatedFile.getId(),lastUpdatedFile.getName()];
}

场景示例

比如Drive中的文件(从新到旧排序):
call file1 | sms File1 | call file2 | sms file2

原脚本只会返回call file1,但我需要同时得到:

latest of call: call file1
latest of sms : sms file1

改进后的脚本

function GetLatestCallAndSmsFiles() {
  const folderId = '###'; // 替换为你的目标文件夹ID
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  
  let latestCallFile = null;
  let latestSmsFile = null;

  while (files.hasNext()) {
    const currentFile = files.next();
    const fileName = currentFile.getName();
    const lastUpdated = currentFile.getLastUpdated();

    // 判断文件前缀,更新对应类别的最新文件
    if (fileName.startsWith('call')) {
      if (!latestCallFile || lastUpdated > latestCallFile.getLastUpdated()) {
        latestCallFile = currentFile;
      }
    } else if (fileName.startsWith('sms')) {
      if (!latestSmsFile || lastUpdated > latestSmsFile.getLastUpdated()) {
        latestSmsFile = currentFile;
      }
    }
  }

  // 返回包含两类文件ID和名称的结果
  return {
    latestCall: {
      id: latestCallFile ? latestCallFile.getId() : null,
      name: latestCallFile ? latestCallFile.getName() : null
    },
    latestSms: {
      id: latestSmsFile ? latestSmsFile.getId() : null,
      name: latestSmsFile ? latestSmsFile.getName() : null
    }
  };
}

脚本说明

  • 初始化latestCallFile和latestSmsFile两个变量,分别存储两类文件的最新版本
  • 遍历文件夹内所有文件,通过startsWith()方法判断文件名称前缀
  • 对每类文件,比较当前文件与已记录的最新文件的更新时间,更新最新文件记录
  • 最终返回包含两类文件ID和名称的对象,若某类无对应文件则返回null

返回示例

调用函数后会得到如下格式的返回值:

{
  latestCall: { id: 'xxxxxx', name: 'call file1' },
  latestSms: { id: 'yyyyyy', name: 'sms File1' }
}

内容的提问来源于stack exchange,提问作者user12736831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:01:08