0

Add a portfolio item

by
Published Oct 31, 2023

Add an item to a portfolio. Returns an empty data block.

Script asana
  • Submitted by hugo697 Typescript (fetch-only)
    Created 534 days ago
    1
    type Asana = {
    2
      token: string;
    3
    };
    4
    /**
    5
     * Add a portfolio item
    6
     * Add an item to a portfolio.
    7
    Returns an empty data block.
    8
     */
    9
    export async function main(
    10
      auth: Asana,
    11
      portfolio_gid: string,
    12
      opt_pretty: string | undefined,
    13
      opt_fields: string | undefined,
    14
      body: {
    15
        data?: {
    16
          insert_after?: string;
    17
          insert_before?: string;
    18
          item: string;
    19
          [k: string]: unknown;
    20
        };
    21
        [k: string]: unknown;
    22
      }
    23
    ) {
    24
      const url = new URL(
    25
        `https://app.asana.com/api/1.0/portfolios/${portfolio_gid}/addItem`
    26
      );
    27
      for (const [k, v] of [
    28
        ["opt_pretty", opt_pretty],
    29
        ["opt_fields", opt_fields],
    30
      ]) {
    31
        if (v !== undefined && v !== "") {
    32
          url.searchParams.append(k, v);
    33
        }
    34
      }
    35
      const response = await fetch(url, {
    36
        method: "POST",
    37
        headers: {
    38
          "Content-Type": "application/json",
    39
          Authorization: "Bearer " + auth.token,
    40
        },
    41
        body: JSON.stringify(body),
    42
      });
    43
      if (!response.ok) {
    44
        const text = await response.text();
    45
        throw new Error(`${response.status} ${text}`);
    46
      }
    47
      return await response.json();
    48
    }
    49