Google Apps Script를 사용하여 모든 폴더 및 해당 ID의 목록을 검색하려고합니다. 현재, 결과를 배열에 쓰고 있는데,이 배열은 스프레드 시트에 5000 개 레코드마다 게시됩니다. 불행히도 스크립트는 완료 전에 실행 제한 (5 분)에 도달합니다. 이 문제를 어떻게 해결할 수 있습니까? 그리고 Apps Script를 사용하는 것보다 HTTP를 통해 RESTful API 호출을 더 성공적으로 수행 할 수 있습니까?실행 한계에 도달하지 않고 모든 폴더 이름과 ID를 반환하려면 어떻게해야합니까?
나는 다음과 같은 언급했습니다
는- 코드는 이미 구글의 대부분을 씁니다 다음 가장 좋은 방법입니다.
- 느린 실행은 Apps 스크립트 색인 생성의 결과로 느리게 실행됩니다.
- 결과가 일관된 색인 패턴을 따르는 것으로 나타납니다.
- 다중 실행은 같은 순서로 결과를 항목 인덱싱 방법은
는 드라이브 캐싱으로 보았다 확인되지 않는
- 델타 신뢰할 수 없습니다 실행 사이의 의미있는 캐싱을 방지 첨가 하였을 때 다시 색인 방법
- 알을 생산하고 있습니다.
- 가 여전히 FolderIterator 객체를 통해 루프에 필요한에게
- 이론적 인 성능은 더 악화 IMO 것
코드는 다음과 같습니다 (맞습니까?) :
는function LogAllFolders() {
var ss_index = 1;
var idx = 0;
var folder;
var data = new Array(5000);
for (i=0;i<5000;i++){
data[i] = new Array(2);
}
var ss = SpreadsheetApp.create("FolderInv2",1,2).getSheets()[0];
var root = DriveApp.getFolders();
while(root.hasNext()) {
folder = root.next();
data[idx][0] = folder.getName();
data[idx][1] = folder.getId();
idx++;
if ((ss_index % 5000) == 0) {
ss.insertRowsAfter(ss.getLastRow()+1, 5000);
ss.getRange(ss.getLastRow()+1,1,5000,2).setValues(data);
SpreadsheetApp.flush();
idx = 0;
}
ss_index++;
}
}
드라이브 목록의 페이징 기능을보고 시간 기반 트리거와 결합하십시오 –