Created
April 26, 2019 04:41
-
-
Save badboy99tw/6a71d1bdf557d66af72001d733c1b246 to your computer and use it in GitHub Desktop.
Update doc to list files in specific folder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function onOpen() { | |
| var ui = DocumentApp.getUi(); | |
| ui.createMenu('工具') | |
| .addItem('更新文件索引', 'updateHomePage') | |
| .addToUi(); | |
| } | |
| function updateHeader(body, title) { | |
| body.insertParagraph(0, title) | |
| .setHeading(DocumentApp.ParagraphHeading.HEADING1) | |
| var lastUpdatedTime = Utilities.formatDate(new Date(), "Asia/Taipei", "yyyy-MM-dd HH:mm:ss") | |
| body.insertParagraph(1, "最後更新時間:" + lastUpdatedTime + "(程式自動更新,請勿手動!)") | |
| } | |
| function compareFile(a, b){ | |
| var x = a.name.toLowerCase(); | |
| var y = b.name.toLowerCase(); | |
| if (x < y) {return -1;} | |
| if (x > y) {return 1;} | |
| return 0; | |
| } | |
| function appendFiles(body, files) { | |
| files.sort(compareFile) | |
| for (var i = 0; i < files.length; i++) { | |
| var file = files[i] | |
| body.appendListItem(file.name) | |
| .setLinkUrl(file.url) | |
| .setGlyphType(DocumentApp.GlyphType.BULLET) | |
| } | |
| } | |
| function appendFolders(body, folders) { | |
| folders.sort(compareFile) | |
| for (var i = 0; i < folders.length; i++) { | |
| var folder = folders[i] | |
| body.appendParagraph(folder.name) | |
| .setHeading(DocumentApp.ParagraphHeading.HEADING2); | |
| appendFiles(body, folder.files) | |
| } | |
| } | |
| function emptyDocument(doc) { | |
| // var document = DocumentApp.getActiveDocument(); | |
| var body = doc.getBody(); | |
| // to be sure to delete the last paragraph in case it doesn't end with a cr/lf | |
| body.appendParagraph(''); | |
| while (body.getNumChildren() > 1) { | |
| body.removeChild(body.getChild(0)) | |
| } | |
| } | |
| function updateHomePage() { | |
| objects = listdir("資料夾名稱") | |
| var doc = DocumentApp.getActiveDocument(); | |
| emptyDocument(doc) | |
| var body = doc.getBody() | |
| // update header | |
| updateHeader(body, "文件標題") | |
| // update body | |
| appendFiles(body, objects.filter(function(o){return o.type === "FILE"})) | |
| appendFolders(body, objects.filter(function(o){return o.type === "FOLDER"})) | |
| } | |
| function listdir(folderName) { | |
| var parent = DriveApp.getFoldersByName(folderName).next() | |
| var result = [] | |
| // list files | |
| var files = parent.getFiles() | |
| while (files.hasNext()) { | |
| file = files.next() | |
| result.push({ | |
| "type": "FILE", | |
| "name": file.getName(), | |
| "url": file.getUrl() | |
| }) | |
| } | |
| // list folders | |
| var childFolders = parent.getFolders(); | |
| while (childFolders.hasNext()) { | |
| var childFolder = childFolders.next() | |
| var name = childFolder.getName() | |
| result.push({ | |
| "type": "FOLDER", | |
| "name": childFolder.getName(), | |
| "url": childFolder.getUrl(), | |
| "files": listdir(childFolder) | |
| }) | |
| } | |
| return result | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment