Action
save drafts from date - text dates
simple consolidation of all drafts (modified/created choice) for one day or between dates, into one big file, and script options for full output to drafts, icloud, bookmark. Edit the script for output choices, or exact phrasing of filenames, divider separating drafts, etc.
same as prior drafts from date, except date entry is for text box, not datepicker. All works.
Steps
-
script
// today_to_file.js var datename='',drArr=[],t=''; var day = new Date(),tnote='',fm=''; var divider = "\n<><><><><><><><>\n" // will be placed between drafts when consolidated inot one file var p = Prompt.create(); p.title = "Consolidate day(s) drafts"; p.message = "(defaults to today)"; // //set choices in picker p.addTextField("strtDate", "Start date (yyyy-mm-dd)", strftime(day,"%Y-%m-%d") ); p.addTextField("endDate","End date (yyyy-mm-dd)",strftime(day,"%Y-%m-%d")); p.addSwitch("sw2","modifiedAt <- vs. -> createdAt",false) p.addSwitch("sw1","early_1st <- vs. -> later_1st",false) p.addSelect("loc","location:",["all","inbox","archive","trash"],["inbox"], false) p.addTextField("tgs", "if desired, by Tags (ALL REQD):", ""); p.addTextField("ogs", "if desired, OMIT these Tags:", ""); // a final "go" button p.addButton("Consolidate drafts"); // now show and choose var didSelect = p.show(); // //collect the values from the prompt: var locat = p.fieldValues["loc"]; var qTags = p.fieldValues["tgs"]; var oTags = p.fieldValues["ogs"]; var sortBy = p.fieldValues["sw2"]; var sortTime = p.fieldValues["sw1"]; var startDate = p.fieldValues["strtDate"]; startDate = new Date(startDate) var endDate = p.fieldValues["endDate"]; endDate = new Date(endDate); endDate = new Date(endDate); if (qTags.trim().length==0) {qTags=[]} else {qTags=qTags.split(",")} if (oTags.trim().length==0) {oTags=[]} else {oTags=oTags.split(",")} if (sortBy) {sortBy="created"} else {sortBy="modified"} startDate.setHours(0, 0, 1) endDate.setHours(23, 59, 59) // if (p.buttonPressed == "Consolidate drafts") { // // drArr = Draft.query("", locat,qTags, oTags,sortBy, sortTime, false); //found every draft & sorted by modified/created and time ordered // var outArr=[]; // define empty results array tx = ''; strt = startDate.getTime(); //number(msecs post 1970) endd = endDate.getTime() //number(msecs post 1970) //? msec conversion gives a SLIGHT speed benefit over library comparisons for (let n=0;n<drArr.length;n++) { if (sortBy=="modified") {t = drArr[n].modifiedAt.getTime();} if (sortBy=="created") {t = drArr[n].createdAt.getTime();} if ((t>=strt)&&(t<=endd)) {outArr.push(drArr[n]);} } // // // // // BUILD THE FOUND DRAFTS INTO ONE COMBINED NOTE // 1st, set a suitable filename and a first line for the output body startDate = strftime(startDate,"%y-%m-%d %a"); // for writing out purposes endDate = strftime(endDate,"%a %y-%m-%d"); let txtInsert = " daily Drafts", tExt= ".md"; // change as desired, within "..."; if (startDate==endDate) { // set filenames depending on days' matching targ = endDate + txtInsert + tExt; tnote ="consolidated "+ outArr.length + " Drafts found for "+startDate; // 1st line txt } else { targ = startDate + "--" + endDate + txtInsert + tExt; tnote="consolidated "+outArr.length+" Draft(s) found between "+startDate+" and "+endDate; } // that gives date-sortable titles // "2022-08-15 daily Drafts.md" or "2022-08-15--2022-08-16 daily Drafts.md" // now set a suitbale title and a first line for the output body // construct the rest of the body for (let t of outArr) { tnote=tnote + divider + strftime(t.modifiedAt,"%a %y-%m-%d %r")+ "\n" + t.content; // builds output by one draft content at a time } // // NOW OUTPUT, looping through found drafts, // // the next target sets are output, disable any SET OF 3 LINES you might want inactive by adding the double slash(//-- comment) to the front of each (or remove) // you may change any of the wording (within quotes) // set an appropriate filename for file systems // to write to a new draft, uncomment (remove '//': // d = new Draft(); // d.content = tnote; // d.update(); // // to write to the any cloud or local file system Drafts iCloud directory //leave the next three lines to write to Drafts iCloud fm = FileManager.createCloud(); fm.createDirectory("Drafts By Day","/"); t = fm.writeString("/Drafts By Day/"+targ,tnote); // // leave the next three lines to write to a Bookmark (if one not set, you can set it as this runs) // let bookmark = Bookmark.findOrCreate("DraftsByDay"); // fm = FileManager.createForBookmark(bookmark); // t = fm.writeString(targ,tnote); // end of this script } // end of if button pressed
Options
-
After Success Default Notification Info Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.