Global Find and Replace

Posted by jsamlarose, Last update 8 months ago

Quick and dirty solution adapted from Derek Van’s “retitle” script (


  • script

    //This scripts prompts for a new title and then replaces the old title with it.// 
    //The script also searches the current workspace to locate links based on the old title, and updates them.//
    // prompt for new title.// 
    let p = Prompt.create();
    p.title = "Search for";
    p.message = "careful; CMD-Z will not save you from your mistakes here... ";
    p.addTextField("searchFor", "Search For", editor.getSelectedText(), {
        "placeholder": " ",
        "autocorrect": false,
        "autocapitalization": "none",
        "wantsFocus": true
    p.addTextField("replaceWith", "Replace With", "", {
        "placeholder": " ",
        "autocorrect": false,
        "autocapitalization": "none",
        "wantsFocus": true
    // could also add a "search" button here that would pull up an MGCL style list of all instances, then you could also select the ones you want to replace...
    if ( {
        //Establish variables for the search and replacement
        let searchFor = p.fieldValues["searchFor"];
        let replaceWith = p.fieldValues["replaceWith"];
        //Search the current workspace looking for instances based on the query and update them.
        let count = 0
        let cCount = 0
        // let workspace = new Workspace() // JSLR: added this to search all not just current workspace and so avoid missing some drafts if a workspace is filtered
        var drafts = app.currentWorkspace.query("all"); // swap next line for this and remove the line above to focus on the current workspace only
        // var drafts = workspace.query("all");
        for (let d of drafts) {
            		if (d.content.includes(searchFor)){ 
                 // let regex =  new RegExp(searchFor,'g'); 
                 // d.content = d.content.replace(regex,replaceWith); 
                	d.content = d.content.replaceAll(searchFor, replaceWith);
        editor.setText(editor.getText().replace(searchFor, replaceWith))
        alert(cCount + " changed in " + count + " drafts evaluated.");


  • After Success Default
    Notification Error
    Log Level Error
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.