Drafts Action Directory

Send multiple to iA Writer

Posted by @davenicholls, Last update 10 months ago

Sends multiple drafts as separate files to iA Writer using the new x-callback-URL scheme

Allows you to choose the folder to send the drafts to. Note that the folder must exist or the action will fail

As written, drafts are chosen from the inbox, the search criteria can be changed. See the draft.query documentation (https://reference.getdrafts.com/objects/Draft.html)

Filename is set to the file safe version of the draft title. Note: The action uses the iA Writer ‘create’ option, which renames duplicates rather than replacing

Requires auth token, which can be found in iA Writer -> Settings -> URL Commands



  • script

    const baseURL = "ia-writer://x-callback-url/write/";
    var credential = Credential.create("IA-Writer", "IA-Writer Token");
    credential.addTextField("token", "Token");
    var result = credential.authorize();
    if (!result) {
       alert("Failed to obtain credentials. Please check and retry");
       context.cancel("Failed to obtain credentials");
    else {
       // Find all drafts in the inbox - could be changed to another folder, or to include tags
       var inboxDrafts = Draft.query('','inbox',[]);
       var myDrafts = [];
       // Put all the title lines in an array for the prompt
       for (d in inboxDrafts) {
       var p = Prompt.create();
       p.title = "Choose Drafts"
       p.addTextField("path", "Save Path", '/', {})
       if (p.buttonPressed == "Ok") {
          var chosenDrafts = p.fieldValues["theDrafts"];
          if (chosenDrafts.length == 0) {
             alert("No Drafts were chosen");
          else {
    			basePath = p.fieldValues["path"]
    			if (basePath.slice(-1) != "/") {
    				basePath += "/"
    			for (var d=0;d < chosenDrafts.length; d++) {
                var a = myDrafts.indexOf(chosenDrafts[d]);
                // create and configure callback object
                var cb = CallbackURL.create();
                cb.baseURL = baseURL;
                cb.addParameter("auth-token", credential.getValue("token"));
                cb.addParameter("path", basePath+inboxDrafts[a].processTemplate("[[safe_title]]"+".txt"));
                cb.addParameter("text", inboxDrafts[a].content);
                var success = cb.open();
                if (success) {
                   console.log("File created: "+ cb.callbackResponse.path);
                else {
                   if (cb.status == "cancel") {
                   else {


  • After Success Default
    Notification Info
    Log Level Info


Actions available in the Action Directory are uploaded by community members. Use appropriate caution reviewing downloaded actions before use.