Action

Todoist: Add comment to specific project

Posted by @FlohGro, Last update over 3 years ago - Unlisted

Steps

  • script

    // See online documentation for examples
    // http://getdrafts.com/scripting
    // action from @TDK_SA90, modified by @FlohGro
    // original action: https://actions.getdrafts.com/a/1fG
    
    
    // utility function
    let mapIds = (arr, key, valKey) => {
        let result = {};
        arr.forEach(o => {
            result[o[key]] = o[valKey];
        })
        return result;
    }
    
    let f = () => {
    
        let content = draft.processTemplate("[[draft]]");
    
        let todoist = Todoist.create();
        let projects = todoist.getProjects();
    
        if (!projects) {
            console.log("Unable to retreive data from Todoist.");
            return false;
        }
    
        console.log("1");
        // create prompt
        let p = Prompt.create();
        p.title = "Select Project to Import";
    
        // add projects
        let projectLookup = mapIds(projects, "name", "id");
        let projectNames = Object.keys(projectLookup);
        p.addPicker("project", "Project", [projectNames], [0]);
    
        p.addButton("Select Project");
        if (!p.show()) {
            context.cancel();
            return true;
        }
        console.log("2");
        // read values from prompt
        let projectIndex = p.fieldValues["project"][0];
        let projectName = projectNames[projectIndex];
        let projectID = projectLookup[projectName];
    
    
    
        console.log("3");
        let result = todoist.createComment({
            "project_id": projectID,
            "content": content
    
        });
        if (result) {
            return true
        } else {
            return false
        }
    }
    
    if (!f()) {
        context.fail()
    }

Options

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