Edits history of script submission #3164 for ' Search tasks in a workspace (asana)'

  • nativets
    One script reply has been approved by the moderators
    Ap­pro­ved
    type Asana = {
      token: string;
    };
    /**
     * Search tasks in a workspace
     * To mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.
     */
    export async function main(
      auth: Asana,
      workspace_gid: string,
      opt_pretty: string | undefined,
      opt_fields: string | undefined,
      text: string | undefined,
      resource_subtype: "default_task" | "milestone" | undefined,
      assignee_any: string | undefined,
      assignee_not: string | undefined,
      portfolios_any: string | undefined,
      projects_any: string | undefined,
      projects_not: string | undefined,
      projects_all: string | undefined,
      sections_any: string | undefined,
      sections_not: string | undefined,
      sections_all: string | undefined,
      tags_any: string | undefined,
      tags_not: string | undefined,
      tags_all: string | undefined,
      teams_any: string | undefined,
      followers_not: string | undefined,
      created_by_any: string | undefined,
      created_by_not: string | undefined,
      assigned_by_any: string | undefined,
      assigned_by_not: string | undefined,
      liked_by_not: string | undefined,
      commented_on_by_not: string | undefined,
      due_on_before: string | undefined,
      due_on_after: string | undefined,
      due_on: string | undefined,
      due_at_before: string | undefined,
      due_at_after: string | undefined,
      start_on_before: string | undefined,
      start_on_after: string | undefined,
      start_on: string | undefined,
      created_on_before: string | undefined,
      created_on_after: string | undefined,
      created_on: string | undefined,
      created_at_before: string | undefined,
      created_at_after: string | undefined,
      completed_on_before: string | undefined,
      completed_on_after: string | undefined,
      completed_on: string | undefined,
      completed_at_before: string | undefined,
      completed_at_after: string | undefined,
      modified_on_before: string | undefined,
      modified_on_after: string | undefined,
      modified_on: string | undefined,
      modified_at_before: string | undefined,
      modified_at_after: string | undefined,
      is_blocking: string | undefined,
      is_blocked: string | undefined,
      has_attachment: string | undefined,
      completed: string | undefined,
      is_subtask: string | undefined,
      sort_by:
        | "due_date"
        | "created_at"
        | "completed_at"
        | "likes"
        | "modified_at"
        | undefined,
      sort_ascending: string | undefined
    ) {
      const url = new URL(
        `https://app.asana.com/api/1.0/workspaces/${workspace_gid}/tasks/search`
      );
      for (const [k, v] of [
        ["opt_pretty", opt_pretty],
        ["opt_fields", opt_fields],
        ["text", text],
        ["resource_subtype", resource_subtype],
        ["assignee.any", assignee_any],
        ["assignee.not", assignee_not],
        ["portfolios.any", portfolios_any],
        ["projects.any", projects_any],
        ["projects.not", projects_not],
        ["projects.all", projects_all],
        ["sections.any", sections_any],
        ["sections.not", sections_not],
        ["sections.all", sections_all],
        ["tags.any", tags_any],
        ["tags.not", tags_not],
        ["tags.all", tags_all],
        ["teams.any", teams_any],
        ["followers.not", followers_not],
        ["created_by.any", created_by_any],
        ["created_by.not", created_by_not],
        ["assigned_by.any", assigned_by_any],
        ["assigned_by.not", assigned_by_not],
        ["liked_by.not", liked_by_not],
        ["commented_on_by.not", commented_on_by_not],
        ["due_on.before", due_on_before],
        ["due_on.after", due_on_after],
        ["due_on", due_on],
        ["due_at.before", due_at_before],
        ["due_at.after", due_at_after],
        ["start_on.before", start_on_before],
        ["start_on.after", start_on_after],
        ["start_on", start_on],
        ["created_on.before", created_on_before],
        ["created_on.after", created_on_after],
        ["created_on", created_on],
        ["created_at.before", created_at_before],
        ["created_at.after", created_at_after],
        ["completed_on.before", completed_on_before],
        ["completed_on.after", completed_on_after],
        ["completed_on", completed_on],
        ["completed_at.before", completed_at_before],
        ["completed_at.after", completed_at_after],
        ["modified_on.before", modified_on_before],
        ["modified_on.after", modified_on_after],
        ["modified_on", modified_on],
        ["modified_at.before", modified_at_before],
        ["modified_at.after", modified_at_after],
        ["is_blocking", is_blocking],
        ["is_blocked", is_blocked],
        ["has_attachment", has_attachment],
        ["completed", completed],
        ["is_subtask", is_subtask],
        ["sort_by", sort_by],
        ["sort_ascending", sort_ascending],
      ]) {
        if (v !== undefined && v !== "") {
          url.searchParams.append(k, v);
        }
      }
      const response = await fetch(url, {
        method: "GET",
        headers: {
          Authorization: "Bearer " + auth.token,
        },
        body: undefined,
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 383 days ago

  • nativets
    type Asana = {
      token: string;
    };
    /**
     * Search tasks in a workspace
     * To mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.
     */
    export async function main(
      auth: Asana,
      workspace_gid: string,
      opt_pretty: string | undefined,
      opt_fields: string | undefined,
      text: string | undefined,
      resource_subtype: "default_task" | "milestone" | undefined,
      assignee_any: string | undefined,
      assignee_not: string | undefined,
      portfolios_any: string | undefined,
      projects_any: string | undefined,
      projects_not: string | undefined,
      projects_all: string | undefined,
      sections_any: string | undefined,
      sections_not: string | undefined,
      sections_all: string | undefined,
      tags_any: string | undefined,
      tags_not: string | undefined,
      tags_all: string | undefined,
      teams_any: string | undefined,
      followers_not: string | undefined,
      created_by_any: string | undefined,
      created_by_not: string | undefined,
      assigned_by_any: string | undefined,
      assigned_by_not: string | undefined,
      liked_by_not: string | undefined,
      commented_on_by_not: string | undefined,
      due_on_before: string | undefined,
      due_on_after: string | undefined,
      due_on: string | undefined,
      due_at_before: string | undefined,
      due_at_after: string | undefined,
      start_on_before: string | undefined,
      start_on_after: string | undefined,
      start_on: string | undefined,
      created_on_before: string | undefined,
      created_on_after: string | undefined,
      created_on: string | undefined,
      created_at_before: string | undefined,
      created_at_after: string | undefined,
      completed_on_before: string | undefined,
      completed_on_after: string | undefined,
      completed_on: string | undefined,
      completed_at_before: string | undefined,
      completed_at_after: string | undefined,
      modified_on_before: string | undefined,
      modified_on_after: string | undefined,
      modified_on: string | undefined,
      modified_at_before: string | undefined,
      modified_at_after: string | undefined,
      is_blocking: string | undefined,
      is_blocked: string | undefined,
      has_attachment: string | undefined,
      completed: string | undefined,
      is_subtask: string | undefined,
      sort_by:
        | "due_date"
        | "created_at"
        | "completed_at"
        | "likes"
        | "modified_at"
        | undefined,
      sort_ascending: string | undefined
    ) {
      const url = new URL(
        `https://app.asana.com/api/1.0/workspaces/${workspace_gid}/tasks/search`
      );
      for (const [k, v] of [
        ["opt_pretty", opt_pretty],
        ["opt_fields", opt_fields],
        ["text", text],
        ["resource_subtype", resource_subtype],
        ["assignee.any", assignee_any],
        ["assignee.not", assignee_not],
        ["portfolios.any", portfolios_any],
        ["projects.any", projects_any],
        ["projects.not", projects_not],
        ["projects.all", projects_all],
        ["sections.any", sections_any],
        ["sections.not", sections_not],
        ["sections.all", sections_all],
        ["tags.any", tags_any],
        ["tags.not", tags_not],
        ["tags.all", tags_all],
        ["teams.any", teams_any],
        ["followers.not", followers_not],
        ["created_by.any", created_by_any],
        ["created_by.not", created_by_not],
        ["assigned_by.any", assigned_by_any],
        ["assigned_by.not", assigned_by_not],
        ["liked_by.not", liked_by_not],
        ["commented_on_by.not", commented_on_by_not],
        ["due_on.before", due_on_before],
        ["due_on.after", due_on_after],
        ["due_on", due_on],
        ["due_at.before", due_at_before],
        ["due_at.after", due_at_after],
        ["start_on.before", start_on_before],
        ["start_on.after", start_on_after],
        ["start_on", start_on],
        ["created_on.before", created_on_before],
        ["created_on.after", created_on_after],
        ["created_on", created_on],
        ["created_at.before", created_at_before],
        ["created_at.after", created_at_after],
        ["completed_on.before", completed_on_before],
        ["completed_on.after", completed_on_after],
        ["completed_on", completed_on],
        ["completed_at.before", completed_at_before],
        ["completed_at.after", completed_at_after],
        ["modified_on.before", modified_on_before],
        ["modified_on.after", modified_on_after],
        ["modified_on", modified_on],
        ["modified_at.before", modified_at_before],
        ["modified_at.after", modified_at_after],
        ["is_blocking", is_blocking],
        ["is_blocked", is_blocked],
        ["has_attachment", has_attachment],
        ["completed", completed],
        ["is_subtask", is_subtask],
        ["sort_by", sort_by],
        ["sort_ascending", sort_ascending],
      ]) {
        if (v !== undefined && v !== "") {
          url.searchParams.append(k, v);
        }
      }
      const response = await fetch(url, {
        method: "GET",
        headers: {
          Authorization: "Bearer " + auth.token,
        },
        body: undefined,
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 937 days ago