Edits history of script submission #22392 for ' Get new files (gdrive)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    import {
      getState,
      setState,
    } from "windmill-client@1";
    import { drive } from "@googleapis/drive@4";
    
    const PAGE_SIZE = 500 as const;
    
    /**
     * @returns A list of newly uploaded files in ascending order
     * of creation date.
     * Maximum number of returned items is set to `500` for each run.
     */
    type Gdrive = {
      token: string;
    };
    export async function main(auth: Gdrive) {
      const client = drive({
        version: "v3",
        headers: {
          Authorization: `Bearer ${auth.token}`,
        },
      });
    
      const lastCheck = await getState();
      await setState(new Date().toISOString());
      const response = await client.files.list({
        q: lastCheck ? `createdTime > '${lastCheck}'` : undefined,
        orderBy: "createdTime asc",
        pageSize: PAGE_SIZE,
      });
      if (response.data.nextPageToken && response?.data?.files?.at(-1)) {
        const lastItem = await client.files.get({
          fileId: response.data.files.at(-1)?.id || undefined,
          fields: "createdTime",
        });
        const date = lastItem?.data?.createdTime;
        if (date) {
          await setState(date);
        }
      }
    
      return response.data.files;
    }
    

    Submitted by hugo989 2 days ago