【发布时间】:2013-12-17 12:26:57
【问题描述】:
问题:- 我需要从一些 Google Drive 文件夹中获取最新创建的文档的名称和 ID。
解决方案:- 我无法找到一种简单的方法来获取它,因此,为文件夹中的文件创建了一个循环以获取最大日期 - 然后在文件夹中再次循环以匹配日期并记录名称和日期 - 下面的代码(当如前所述评论)适用于解决方案。
我没有用不同的文件夹名称重写整个代码,而是尝试为文件夹名称创建一个循环。
但是,应用程序脚本进入无限循环,发出最大执行时间限制消息。 任何帮助表示赞赏。
function Get_lastestdate() {
//Define Spreadsheet and sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("PEOPLE");
//comment from here to work properly
for (var i =1; i < 4; i++) {
if (i = 1) { var foldername = "Folder1"}
if (i = 2) { var foldername = "Folder2"}
if (i = 3) { var foldername = "Folder3"}
// till here
//Define folder and files
var folder = DocsList.getFolder(foldername); //set folder name in case commenting.
var lastfile = folder.getFiles();
//Make a blank array
var noofdaysarray = []
var yeararray = []
//Loop to get all No of days in a year & the year
for (var i in lastfile) {
noofdaysarray.push(Utilities.formatDate(lastfile[i].getDateCreated(),"GMT","D"));
yeararray.push(Utilities.formatDate(lastfile[i].getDateCreated(),"GMT","y"));
}
//Get the max date from date and year
var largestdate = Math.max.apply(Math, noofdaysarray);
var largestyear = Math.max.apply(Math, yeararray);
//Get maximum available date
var matchcriteria = largestdate + largestyear
//Again loop for matching criteria with the actual date uploaded
for (var i in lastfile) {
var lastdate = Utilities.formatDate(lastfile[i].getDateCreated(),"GMT","D");
var lastyear = Utilities.formatDate(lastfile[i].getDateCreated(),"GMT","y");
var wholedate = parseInt(lastdate) + parseInt(lastyear); //parseInt is for converting text to number
//Get doc name if both dates matches
if (wholedate == matchcriteria) {
Logger.log(lastfile[i].getId());
Logger.log(lastfile[i].getName());
}
}
} //comment this as a part of loop
}
之间:- 如果有更简单的方法,请告诉我。
【问题讨论】:
-
我认为你会更好地使用 DriveApp.folder.searchfiles developers.google.com/apps-script/reference/drive/… 来获取自上次运行以来的文件,然后遍历这些文件
标签: google-apps-script google-spreadsheet-api