Get new files

Trigger script to periodically get the newly uploaded files.

Script· trigger gdrive Verified

by adam186 · 12/20/2022

The script

Submitted by hugo989 Bun
Verified 2 days ago
1
import {
2
  getState,
3
  setState,
4
} from "windmill-client@1";
5
import { drive } from "@googleapis/drive@4";
6

7
const PAGE_SIZE = 500 as const;
8

9
/**
10
 * @returns A list of newly uploaded files in ascending order
11
 * of creation date.
12
 * Maximum number of returned items is set to `500` for each run.
13
 */
14
type Gdrive = {
15
  token: string;
16
};
17
export async function main(auth: Gdrive) {
18
  const client = drive({
19
    version: "v3",
20
    headers: {
21
      Authorization: `Bearer ${auth.token}`,
22
    },
23
  });
24

25
  const lastCheck = await getState();
26
  await setState(new Date().toISOString());
27
  const response = await client.files.list({
28
    q: lastCheck ? `createdTime > '${lastCheck}'` : undefined,
29
    orderBy: "createdTime asc",
30
    pageSize: PAGE_SIZE,
31
  });
32
  if (response.data.nextPageToken && response?.data?.files?.at(-1)) {
33
    const lastItem = await client.files.get({
34
      fileId: response.data.files.at(-1)?.id || undefined,
35
      fields: "createdTime",
36
    });
37
    const date = lastItem?.data?.createdTime;
38
    if (date) {
39
      await setState(date);
40
    }
41
  }
42

43
  return response.data.files;
44
}
45

Other submissions
  • Submitted by adam186 Deno
    Created 394 days ago
    1
    import {
    2
      getState,
    3
      setState,
    4
    } from "https://deno.land/x/[email protected]/mod.ts";
    5
    import { drive } from "npm:@googleapis/drive@4";
    6
    
    
    7
    const PAGE_SIZE = 500 as const;
    8
    
    
    9
    /**
    10
     * @returns A list of newly uploaded files in ascending order
    11
     * of creation date.
    12
     * Maximum number of returned items is set to `500` for each run.
    13
     */
    14
    type Gdrive = {
    15
      token: string;
    16
    };
    17
    export async function main(auth: Gdrive) {
    18
      const client = drive({
    19
        version: "v3",
    20
        headers: {
    21
          Authorization: `Bearer ${auth.token}`,
    22
        },
    23
      });
    24
    
    
    25
      const lastCheck = await getState();
    26
      await setState(new Date().toISOString());
    27
      const response = await client.files.list({
    28
        q: lastCheck ? `createdTime > '${lastCheck}'` : undefined,
    29
        orderBy: "createdTime asc",
    30
        pageSize: PAGE_SIZE,
    31
      });
    32
      if (response.data.nextPageToken && response?.data?.files?.at(-1)) {
    33
        const lastItem = await client.files.get({
    34
          fileId: response.data.files.at(-1)?.id || undefined,
    35
          fields: "createdTime",
    36
        });
    37
        const date = lastItem?.data?.createdTime;
    38
        if (date) {
    39
          await setState(date);
    40
        }
    41
      }
    42
    
    
    43
      return response.data.files;
    44
    }
    45