1

Get new files

by
Published Dec 20, 2022

Trigger script to periodically get the newly uploaded files.

Scriptยท trigger gdrive Verified

The script

Submitted by hugo989 Bun
Verified 16 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 408 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