假设一个文件夹中有100个文件"A";在谷歌驱动器。每个文件都有一个5个字符的名称。例如12345,在文件夹中有两个名称匹配的文件,即12345-A和12345-B。我想要的脚本应该忽略匹配文件名中的-A和-B,并且应该返回工作表中A1范围的文件URl。谁能帮上忙吗。此外,我们的想法是将匹配的文件合并为一个pdf文件,并与URL一起保存在谷歌驱动器中。
试试这个:
// Example files
let files = ["test1-A","test2-B", "test1-B", "test2-A"];
// Where to store files with the same name you described
let similar = {};
// Sorting the files
for(let file of files) {
let name = file.match(/^[a-z0-9]+/i)[0]; // Removes the trailing '-A' and '-B'
if(typeof similar[name] === "undefined") similar[name] = []
similar[name].push(file)
}
console.log(similar)
这将产生以下结果:
{
test1: ["test1-A", "test1-B"],
test2: ["test2-B", "test1-A"]
}
您必须使用Apps Script中的Drive
服务
例如,为了获得包含";12345";在它们的标题中,您必须创建一个查询,然后根据要搜索的文件夹的id,使用searchFiles
方法。
var query = 'title contains "12345"';
var searchResults = DriveApp.getFolderById('FOLDER_ID').searchFiles(query);
之后,根据您的任务,您可以使用hasNext
方法访问这些文件
while (searchResults.hasNext()) {
var file = searchResults.next();
// do other tasks
}
至于访问电子表格,您必须使用Spreadsheet
服务,以下方法可以帮助您完成任务:
getRange
-根据您为此方法选择的参数,这将从扩展页返回范围;setValue
-这将设置范围的值;
参考
应用程序脚本驱动应用程序类-搜索文件(params(;
应用程序脚本表类-getRange(行,列(;
应用程序脚本范围类-setValue(value(。