Collect today's drafts

Is there an action that collect together all the drafts written at the end pf the day and put them together in a new draft?

Is the inbuilt option sufficient, or do you require greater automation. It would be quite straight forward to put together if you did, and would be a good first exercise if you have not created scripted actions before.

Thanks
the first automation needed is to collect by “today”… where should I look to create a SIMPLE script?

Well, just to be clear, I said straight forward, not “SIMPLE”; simple would be the least effort, which for me would be the built in merge function referenced above.

In terms of a bit of guidance, here is one approach you could take to tackling this.

You can use a temporary workspace to get today’s drafts.

https://scripting.getdrafts.com/classes/workspace

You can then “query” for a list (array) of Drafts in the workspace inbox.

For each draft in that list/array, you take it’s content property, join them together separated by whatever text you wish (e.g., a newline) and put them into a new draft.

https://scripting.getdrafts.com/classes/draft

If you wish you could then automatically do something else with the new draft, such as load it into the editor.

https://scripting.getdrafts.com/classes/editor

Hope that helps.

I had a few minutes to spare this evening, so I put together a commented example, and dropped it into an action.

Reveal the Example Code
function mergeDraftsToday(p_Separator = "\n")
{
	// Create a new workspace object
	// We are not going to save this, just use it to get today's drafts
	let wsToday = Workspace.create();

	// Build a query date for drafts created today
	let qdStart = new QueryDate();
	qdStart.field = "created";
	qdStart.type = "absolute";
	qdStart.date = Date.today();

	// Assign the query date to the workspace
	wsToday.startDate = qdStart;

	// Get an array of drafts from the inbox for the 'today' workspace
	let adToday = wsToday.query("inbox");

	// Create an empty array and populate it with the content of today's drafts
	// Each draft's content becomes a separate element in the array
	let astrOutput = [];
	adToday.map(dToday => astrOutput.push(dToday.content));

	// Create a new draft from the array of draft content
	// The drafts are concatenatd using a separator string passed into the function
	let dNew = Draft.create();
	dNew.content = astrOutput.join(p_Separator);
	dNew.update();

	// Load the new draft and activate the editor
	editor.load(dNew);
	editor.activate();
}

// Merge today's drafts into a new draft with two newline characters between each of the drafts' content
mergeDraftsToday("\n\n");
2 Likes

Thanks a lot, I’ll study it!