google-apps-script - 如何搜索包含空格的文件名,以便消除空格
问题描述
对于以下内容,N 代表数字,S&F 代表姓氏和名字中的字母:
我已经创建了一个包含大约 6,500 个 pdf 图像的文件结构,文件名的格式通常为 NNN.SSSSS.FFFFF.pdf 格式,我需要对其进行标准化,但是我创建的一些文件名在第一个点之后插入了一个空白,就像在这个例子中一样神经网络。SSSS。FFFFF.pdf。某些姓氏前面的空格会影响姓氏排序顺序
我想在我的 Google 云端硬盘中搜索在数字后的点后包含空格的文件名。完成搜索后,我可以通过重命名手动删除空白,或者如果太多,我可以创建一个谷歌脚本。最终,我认为我需要一个数字通配符。假设 %20 代表空白,我在搜索字段中尝试了以下内容,但没有找到 NNN。SSSSS 文件。
%20 .%20 ".%20" <> .%20 here <>我以为不是字母???
帮助请问候Des
解决方案
我相信你的目标如下。
- 您想将PDF 文件的文件名从
NNN. SSSSS. FFFFF.pdf
更改为 。NNN.SSSSS.FFFFF.pdf
- 您想使用 Google Apps 脚本实现此目的。
流动:
不幸的是,在当前阶段,正则表达式不能用于搜索查询。这样,NNN. SSSSS. FFFFF.pdf
不能直接检索具有类似模式文件名的文件。所以我想提出以下流程。
- 检索文件夹中的 PDF 文件。
- 使用正则表达式检查文件名。
- 在这种情况下,我使用
[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf
正则表达式。
- 在这种情况下,我使用
- 将文件名从 更改
NNN. SSSSS. FFFFF.pdf
为NNN.SSSSS.FFFFF.pdf
.
样本
function myFunction() {
const folderId = "###"; // Please set the folder ID.
// 1. Retrieve PDF files in the folder.
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFilesByType(MimeType.PDF);
while (files.hasNext()) {
const file = files.next();
const filename = file.getName();
// 2. Check the filename using regex.
if (/[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) {
// 3. Change the filename
file.setName(filename.replace(/ /g, ""));
}
}
}
如果您想检索 Drive 中的所有 PDF 文件,请使用以下脚本。
const files = DriveApp.getFilesByType(MimeType.PDF); while (files.hasNext()) { const file = files.next(); const filename = file.getName(); if (/[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) { file.setName(filename.replace(/ /g, "")); } }
笔记:
- 在此正则表达式中,检查字母和数字。如果特定字符包含在 的模式中
NNN. SSSSS. FFFFF.pdf
,请告诉我。
参考:
添加
- 从
By NNN I should have said these are numerals ranging from 001 to 999.
,我理解NNN
为 3 位数字。 - 从
In the same sense that SSSSS represents a Surname having multitude of letters and ranging in length.
,我明白那SSSSS
是 5 个字符的字符串。
从上面看,修改后的示例脚本如下。
样本
function myFunction() {
const folderId = "###"; // Please set the folder ID.
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFilesByType(MimeType.PDF);
while (files.hasNext()) {
const file = files.next();
const filename = file.getName();
if (/[0-9]{3}\. [a-zA-Z]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) {
file.setName(filename.replace(/ /g, ""));
}
}
}
或者
function myFunction() {
const files = DriveApp.searchFiles("title contains '. ' and mimeType='application/pdf'");
while (files.hasNext()) {
const file = files.next();
const filename = file.getName();
if (filename.includes(". ")) {
file.setName(filename.replace(/ /g, ""));
}
}
}
推荐阅读
- google-api - 我可以使用服务帐户通过 API 将 Google 日历事件从一个用户移动到另一个用户吗
- python - vscode:调试单个单元测试方法
- postgresql - Postgress pg_partman 每周分区,更改周开始日期
- mongodb - Mongo DB加入主/外键
- go - 如何返回golang中的错误?
- html - 我试图模仿这个页面。但我的显示黑屏并显示“单击或点击开始视频”
- c# - 是否可以从 AddParameter 方法 RestSharp 中删除引号?
- vscode-extensions - 完成项目列表中的滚动条未定位在第一项。我从 provideCompletionItems() 返回 vscode.CompletionItem
- javascript - 我如何在 firestore 上查询我的 subCollection?
- sorting - How do I check if a list is sorted in Haskell using list comprehension?