問題: - 我需要從某些Google雲端硬盤文件夾中獲取最新創建文檔的名稱和ID。GAS Loop無限期
解決方案: - 我無法找到一個簡單的方法來獲取它,因此,創建了一個文件夾內的文件的循環獲取最大日期 - 然後循環再次在文件夾中匹配日期和記錄名稱和日期 - 下面的代碼(如上所述評論時)適用於解決方案。
而不是用一個不同的文件夾名稱重寫整個代碼,我試着創建一個文件夾名稱的循環。
但是,應用程序腳本進入無限循環,發出最大執行時間限制消息。 任何幫助表示讚賞。
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 https://developers.google.com/apps-script/reference/drive/folder#searchFiles(String)從上次運行後獲取文件,然後迭代那些 – DavidF