← Mercury + Google Drive integrations

Create a New File with Google Drive APIon New Transaction from Mercury API

Pipedream makes it easy to connect APIs for Google Drive, Mercury and + other apps remarkably fast.

Trigger workflow on
New Transaction from the Mercury API
Next, do this
Create a New File with the Google Drive API
No credit card required
Trusted by 200,000+ developers from startups to Fortune 500 companies:
Trusted by 200,000+ developers from startups to Fortune 500 companies

Developers Pipedream

Getting Started

This integration creates a workflow with a Mercury trigger and Google Drive action. When you configure and deploy the workflow, it will run on Pipedream's servers 24x7 for free.

  1. Select this integration
  2. Configure the New Transaction trigger
    1. Connect your Mercury account
    2. Configure timer
    3. Select a Account
  3. Configure the Create a New File action
    1. Connect your Google Drive account
    2. Select a Drive
    3. Optional- Select a Parent Folder
    4. Select a Upload Type
    5. Optional- Configure File URL
    6. Optional- Configure File Path
    7. Configure Ignore Default Visibility
    8. Optional- Select a Include Permissions For View
    9. Configure Keep Revision Forever
    10. Optional- Select a OCR Language
    11. Configure Use Content As Indexable Text
    12. Optional- Configure Supports All Drives
    13. Optional- Configure Content Hints Indexable Text
    14. Optional- Configure Content Restrictions Read Only
    15. Optional- Configure Content Restrictions Reason
    16. Optional- Configure Copy Requires Writer Permission
    17. Optional- Configure Description
    18. Optional- Configure Folder Color RGB
    19. Optional- Select a Mime Type
    20. Optional- Configure Name
    21. Optional- Configure Original Filename
    22. Optional- Configure Shortcut Details Target ID
    23. Optional- Configure Starred
    24. Optional- Configure Writers Can Share
  4. Deploy the workflow
  5. Send a test event to validate your setup
  6. Turn on the trigger

Details

This integration uses pre-built, open source components from Pipedream's GitHub repo. These components are developed by Pipedream and the community, and verified and maintained by Pipedream.

To contribute an update to an existing component or create a new component, create a PR on GitHub. If you're new to Pipedream component development, you can start with quickstarts for trigger span and action development, and then review the component API reference.

Trigger

Description:Emits an event for each new transaction in an account.
Version:0.0.1
Key:mercury-new-transaction

Trigger Code

const mercury = require("../../mercury.app.js");

module.exports = {
  key: "mercury-new-transaction",
  name: "New Transaction",
  description: "Emits an event for each new transaction in an account.",
  version: "0.0.1",
  dedupe: "unique",
  props: {
    mercury,
    db: "$.service.db",
    timer: {
      type: "$.interface.timer",
      default: {
        intervalSeconds: 60 * 15,
      },
    },
    account: { propDefinition: [mercury, "account"] },
  },
  methods: {
    getMeta(transaction) {
      const { id, counterpartyName: summary, postedAt } = transaction;
      const ts = new Date(postedAt).getTime();
      return { id, summary, ts };
    },
  },
  async run(event) {
    const lastRunTime = this.db.get("lastRunTime")
      ? new Date(this.db.get("lastRunTime"))
      : this.mercury.daysAgo(1);
    const params = {
      limit: 100,
      offset: 0,
      start: lastRunTime.toISOString().split("T")[0],
    };
    let totalTransactions = params.limit;
    while (totalTransactions == params.limit) {
      const results = await this.mercury.getTransactions(this.account, params);
      const { transactions } = results;
      totalTransactions = transactions.length;
      for (const transaction of transactions) {
        this.$emit(transaction, this.getMeta(transaction));
      }
      params.offset += params.limit;
    }
    this.db.set("lastRunTime", new Date());
  },
};

Trigger Configuration

This component may be configured based on the props defined in the component code. Pipedream automatically prompts for input values in the UI and CLI.
LabelPropTypeDescription
MercurymercuryappThis component uses the Mercury app.
N/Adb$.service.dbThis component uses $.service.db to maintain state between component invocations.
timer$.interface.timer
AccountaccountstringSelect a value from the drop down menu.

Trigger Authentication

Mercury uses API keys for authentication. When you connect your Mercury account, Pipedream securely stores the keys so you can easily authenticate to Mercury APIs in both code and no-code steps.

In order to get Mercury's API key, log into your Mercury account and go to the Settings page to generate a new one.

Action

Description:Create a new file from a URL or /tmp/filepath.
Version:0.0.3
Key:google_drive-create-file

Action Code

const googleDrive = require("../../google_drive.app");
const fs = require("fs");
const got = require("got");
const isoLanguages = require("../language-codes.js");
const googleMimeTypes = require("../google-mime-types.js");
const mimeDb = require("mime-db");
const mimeTypes = Object.keys(mimeDb);

module.exports = {
  key: "google_drive-create-file",
  name: "Create a New File",
  description: "Create a new file from a URL or /tmp/filepath.",
  version: "0.0.3",
  type: "action",
  props: {
    googleDrive,
    drive: {
      propDefinition: [
        googleDrive,
        "watchedDrive",
      ],
    },
    parent: {
      type: "string",
      label: "Parent Folder",
      description:
        `The ID of the parent folder which contains the file. If not specified as part of a 
        create request, the file will be placed directly in the user's My Drive folder.`,
      optional: true,
      async options({ prevContext }) {
        const { nextPageToken } = prevContext;
        let results;
        if (this.drive === "myDrive") {
          results = await this.googleDrive.listFolderOptions(nextPageToken);
        } else {
          results = await this.googleDrive.listFolderOptions(nextPageToken, {
            corpora: "drive",
            driveId: this.drive,
            includeItemsFromAllDrives: true,
            supportsAllDrives: true,
          });
        }
        return results;
      },
    },
    uploadType: {
      type: "string",
      label: "Upload Type",
      description: `The type of upload request to the /upload URI. If you are uploading data
        (using an /upload URI), this field is required. If you are creating a metadata-only file,
        this field is not required. 
        media - Simple upload. Upload the media only, without any metadata.
        multipart - Multipart upload. Upload both the media and its metadata, in a single request.
        resumable - Resumable upload. Upload the file in a resumable fashion, using a series of 
        at least two requests where the first request includes the metadata.`,
      options: [
        "media",
        "multipart",
        "resumable",
      ],
    },
    fileUrl: {
      type: "string",
      label: "File URL",
      description:
        `The URL of the file you want to upload to Google Drive. Must specify either File URL 
        or File Path.`,
      optional: true,
    },
    filePath: {
      type: "string",
      label: "File Path",
      description:
        "The path to the file, e.g. /tmp/myFile.csv . Must specify either File URL or File Path.",
      optional: true,
    },
    ignoreDefaultVisibility: {
      type: "boolean",
      label: "Ignore Default Visibility",
      description: `Whether to ignore the domain's default visibility settings for the created 
        file. Domain administrators can choose to make all uploaded files visible to the domain 
        by default; this parameter bypasses that behavior for the request. Permissions are still 
        inherited from parent folders.`,
      default: false,
    },
    includePermissionsForView: {
      type: "string",
      label: "Include Permissions For View",
      description:
        `Specifies which additional view's permissions to include in the response. Only 
        'published' is supported.`,
      optional: true,
      options: [
        "published",
      ],
    },
    keepRevisionForever: {
      type: "boolean",
      label: "Keep Revision Forever",
      description:
        `Whether to set the 'keepForever' field in the new head revision. This is only applicable
        to files with binary content in Google Drive. Only 200 revisions for the file can be kept 
        forever. If the limit is reached, try deleting pinned revisions.`,
      default: false,
    },
    ocrLanguage: {
      type: "string",
      label: "OCR Language",
      description:
        "A language hint for OCR processing during image import (ISO 639-1 code).",
      optional: true,
      options: isoLanguages,
    },
    useContentAsIndexableText: {
      type: "boolean",
      label: "Use Content As Indexable Text",
      description:
        "Whether to use the uploaded content as indexable text.",
      default: false,
    },
    supportsAllDrives: {
      type: "boolean",
      label: "Supports All Drives",
      description:
        `Whether to include shared drives. Set to 'true' if saving to a shared drive.
        Defaults to 'false' if left blank.`,
      optional: true,
    },
    contentHintsIndexableText: {
      type: "string",
      label: "Content Hints Indexable Text",
      description:
        `Text to be indexed for the file to improve fullText queries. This is limited to 128KB in
        length and may contain HTML elements.`,
      optional: true,
    },
    contentRestrictionsReadOnly: {
      type: "boolean",
      label: "Content Restrictions Read Only",
      description:
        `Whether the content of the file is read-only. If a file is read-only, a new revision of 
        the file may not be added, comments may not be added or modified, and the title of the file 
        may not be modified.`,
      optional: true,
    },
    contentRestrictionsReason: {
      type: "string",
      label: "Content Restrictions Reason",
      description:
        `Reason for why the content of the file is restricted. This is only mutable on requests 
        that also set readOnly=true.`,
      optional: true,
    },
    copyRequiresWriterPermission: {
      type: "boolean",
      label: "Copy Requires Writer Permission",
      description:
        `Whether the options to copy, print, or download this file, should be disabled for 
        readers and commenters.`,
      optional: true,
    },
    description: {
      type: "string",
      label: "Description",
      description: "A short description of the file.",
      optional: true,
    },
    folderColorRgb: {
      type: "string",
      label: "Folder Color RGB",
      description:
        `The color for a folder as an RGB hex string. If an unsupported color is specified,
        the closest color in the palette will be used instead.`,
      optional: true,
    },
    mimeType: {
      type: "string",
      label: "Mime Type",
      description: `The MIME type of the file. Google Drive will attempt to automatically detect
        an appropriate value from uploaded content if no value is provided. The value cannot be 
        changed unless a new revision is uploaded. If a file is created with a Google Doc MIME
        type, the uploaded content will be imported if possible. Google Workspace and Drive 
        MIME Types: https://developers.google.com/drive/api/v3/mime-types`,
      optional: true,
      async options({ page = 0 }) {
        const allTypes = googleMimeTypes.concat(mimeTypes);
        const start = (page - 1) * 10;
        const end = start + 10;
        return allTypes.slice(start, end);
      },
    },
    name: {
      type: "string",
      label: "Name",
      description: "Name of the file",
      optional: true,
    },
    originalFilename: {
      type: "string",
      label: "Original Filename",
      description:
        "The original filename of the uploaded content if available, or else the original value of the name field. This is only available for files with binary content in Google Drive.",
      optional: true,
    },
    shortcutDetailsTargetId: {
      type: "string",
      label: "Shortcut Details Target ID",
      description: "The ID of the file that this shortcut points to.",
      optional: true,
    },
    starred: {
      type: "boolean",
      label: "Starred",
      description: "Whether the user has starred the file.",
      optional: true,
    },
    writersCanShare: {
      type: "boolean",
      label: "Writers Can Share",
      description:
        "Whether users with only writer permission can modify the file's permissions. Not populated for items in shared drives.",
      optional: true,
    },
  },
  async run() {
    const body = this.fileUrl
      ? await got.stream(this.fileUrl)
      : fs.createReadStream(this.filePath);
    return (
      await this.googleDrive.createFile({
        ignoreDefaultVisibility: this.ignoreDefaultVisibility,
        includePermissionsForView: this.includePermissionsForView,
        keepRevisionForever: this.keeprevisionForever,
        ocrLanguage: this.ocrLanguage,
        useContentAsIndexableText: this.useContentAsIndexableText,
        supportsAllDrives: this.supportsAllDrives,
        resource: {
          name: this.name,
          originalFilename: this.originalFilename,
          parents: [
            this.parent,
          ],
          mimeType: this.mimeType,
          description: this.description,
          folderColorRgb: this.folderColorRgb,
          shortcutDetails: {
            targetId: this.shortcutDetailsTargetId,
          },
          starred: this.starred,
          writersCanShare: this.writersCanShare,
          contentHints: {
            indexableText: this.contentHintsIndexableText,
          },
          contentRestrictions: {
            readOnly: this.contentRestrictionsReadOnly,
            reason: this.contentRestrictionsReason,
          },
          copyRequiresWriterPermission: this.copyRequiresWriterPermission,
        },
        media: {
          mimeType: this.mimeType,
          uploadType: this.uploadType,
          body,
        },
        fields: "*",
      })
    );
  },
};

Action Configuration

This component may be configured based on the props defined in the component code. Pipedream automatically prompts for input values in the UI.

LabelPropTypeDescription
Google DrivegoogleDriveappThis component uses the Google Drive app.
DrivedrivestringSelect a value from the drop down menu.
Parent FolderparentstringSelect a value from the drop down menu.
Upload TypeuploadTypestringSelect a value from the drop down menu:mediamultipartresumable
File URLfileUrlstring

The URL of the file you want to upload to Google Drive. Must specify either File URL
or File Path.

File PathfilePathstring

The path to the file, e.g. /tmp/myFile.csv . Must specify either File URL or File Path.

Ignore Default VisibilityignoreDefaultVisibilityboolean

Whether to ignore the domain's default visibility settings for the created
file. Domain administrators can choose to make all uploaded files visible to the domain
by default; this parameter bypasses that behavior for the request. Permissions are still
inherited from parent folders.

Include Permissions For ViewincludePermissionsForViewstringSelect a value from the drop down menu:published
Keep Revision ForeverkeepRevisionForeverboolean

Whether to set the 'keepForever' field in the new head revision. This is only applicable
to files with binary content in Google Drive. Only 200 revisions for the file can be kept
forever. If the limit is reached, try deleting pinned revisions.

OCR LanguageocrLanguagestringSelect a value from the drop down menu:{ "label": "Undetected", "value": "und" }{ "label": "Abkhazian", "value": "ab" }{ "label": "Afar", "value": "aa" }{ "label": "Afrikaans", "value": "af" }{ "label": "Akan", "value": "ak" }{ "label": "Albanian", "value": "sq" }{ "label": "Amharic", "value": "am" }{ "label": "Arabic", "value": "ar" }{ "label": "Aragonese", "value": "an" }{ "label": "Armenian", "value": "hy" }{ "label": "Assamese", "value": "as" }{ "label": "Avaric", "value": "av" }{ "label": "Avestan", "value": "ae" }{ "label": "Aymara", "value": "ay" }{ "label": "Azerbaijani", "value": "az" }{ "label": "Bambara", "value": "bm" }{ "label": "Bashkir", "value": "ba" }{ "label": "Basque", "value": "eu" }{ "label": "Belarusian", "value": "be" }{ "label": "Bengali", "value": "bn" }{ "label": "Bihari languages", "value": "bh" }{ "label": "Bislama", "value": "bi" }{ "label": "Bokmål, Norwegian; Norwegian Bokmål", "value": "nb" }{ "label": "Bosnian", "value": "bs" }{ "label": "Breton", "value": "br" }{ "label": "Bulgarian", "value": "bg" }{ "label": "Burmese", "value": "my" }{ "label": "Catalan; Valencian", "value": "ca" }{ "label": "Central Khmer", "value": "km" }{ "label": "Chamorro", "value": "ch" }{ "label": "Chechen", "value": "ce" }{ "label": "Chichewa; Chewa; Nyanja", "value": "ny" }{ "label": "Chinese", "value": "zh" }{ "label": "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic", "value": "cu" }{ "label": "Chuvash", "value": "cv" }{ "label": "Cornish", "value": "kw" }{ "label": "Corsican", "value": "co" }{ "label": "Cree", "value": "cr" }{ "label": "Croatian", "value": "hr" }{ "label": "Czech", "value": "cs" }{ "label": "Danish", "value": "da" }{ "label": "Divehi; Dhivehi; Maldivian", "value": "dv" }{ "label": "Dutch; Flemish", "value": "nl" }{ "label": "Dzongkha", "value": "dz" }{ "label": "English", "value": "en" }{ "label": "Esperanto", "value": "eo" }{ "label": "Estonian", "value": "et" }{ "label": "Ewe", "value": "ee" }{ "label": "Faroese", "value": "fo" }{ "label": "Fijian", "value": "fj" }{ "label": "Finnish", "value": "fi" }{ "label": "French", "value": "fr" }{ "label": "Fulah", "value": "ff" }{ "label": "Gaelic; Scottish Gaelic", "value": "gd" }{ "label": "Galician", "value": "gl" }{ "label": "Ganda", "value": "lg" }{ "label": "Georgian", "value": "ka" }{ "label": "German", "value": "de" }{ "label": "Greek, Modern (1453-)", "value": "el" }{ "label": "Guarani", "value": "gn" }{ "label": "Gujarati", "value": "gu" }{ "label": "Haitian; Haitian Creole", "value": "ht" }{ "label": "Hausa", "value": "ha" }{ "label": "Hebrew", "value": "he" }{ "label": "Herero", "value": "hz" }{ "label": "Hindi", "value": "hi" }{ "label": "Hiri Motu", "value": "ho" }{ "label": "Hungarian", "value": "hu" }{ "label": "Icelandic", "value": "is" }{ "label": "Ido", "value": "io" }{ "label": "Igbo", "value": "ig" }{ "label": "Indonesian", "value": "id" }{ "label": "Interlingua (International Auxiliary Language Association)", "value": "ia" }{ "label": "Interlingue; Occidental", "value": "ie" }{ "label": "Inuktitut", "value": "iu" }{ "label": "Inupiaq", "value": "ik" }{ "label": "Irish", "value": "ga" }{ "label": "Italian", "value": "it" }{ "label": "Japanese", "value": "ja" }{ "label": "Javanese", "value": "jv" }{ "label": "Kalaallisut; Greenlandic", "value": "kl" }{ "label": "Kannada", "value": "kn" }{ "label": "Kanuri", "value": "kr" }{ "label": "Kashmiri", "value": "ks" }{ "label": "Kazakh", "value": "kk" }{ "label": "Kikuyu; Gikuyu", "value": "ki" }{ "label": "Kinyarwanda", "value": "rw" }{ "label": "Kirghiz; Kyrgyz", "value": "ky" }{ "label": "Komi", "value": "kv" }{ "label": "Kongo", "value": "kg" }{ "label": "Korean", "value": "ko" }{ "label": "Kuanyama; Kwanyama", "value": "kj" }{ "label": "Kurdish", "value": "ku" }{ "label": "Lao", "value": "lo" }{ "label": "Latin", "value": "la" }{ "label": "Latvian", "value": "lv" }{ "label": "Limburgan; Limburger; Limburgish", "value": "li" }{ "label": "Lingala", "value": "ln" }{ "label": "Lithuanian", "value": "lt" }{ "label": "Luba-Katanga", "value": "lu" }{ "label": "Luxembourgish; Letzeburgesch", "value": "lb" }{ "label": "Macedonian", "value": "mk" }{ "label": "Malagasy", "value": "mg" }{ "label": "Malay", "value": "ms" }{ "label": "Malayalam", "value": "ml" }{ "label": "Maltese", "value": "mt" }{ "label": "Manx", "value": "gv" }{ "label": "Maori", "value": "mi" }{ "label": "Marathi", "value": "mr" }{ "label": "Marshallese", "value": "mh" }{ "label": "Mongolian", "value": "mn" }{ "label": "Nauru", "value": "na" }{ "label": "Navajo; Navaho", "value": "nv" }{ "label": "Ndebele, North; North Ndebele", "value": "nd" }{ "label": "Ndebele, South; South Ndebele", "value": "nr" }{ "label": "Ndonga", "value": "ng" }{ "label": "Nepali", "value": "ne" }{ "label": "Northern Sami", "value": "se" }{ "label": "Norwegian", "value": "no" }{ "label": "Norwegian Nynorsk; Nynorsk, Norwegian", "value": "nn" }{ "label": "Occitan (post 1500)", "value": "oc" }{ "label": "Ojibwa", "value": "oj" }{ "label": "Oriya", "value": "or" }{ "label": "Oromo", "value": "om" }{ "label": "Ossetian; Ossetic", "value": "os" }{ "label": "Pali", "value": "pi" }{ "label": "Panjabi; Punjabi", "value": "pa" }{ "label": "Persian", "value": "fa" }{ "label": "Polish", "value": "pl" }{ "label": "Portuguese", "value": "pt" }{ "label": "Pushto; Pashto", "value": "ps" }{ "label": "Quechua", "value": "qu" }{ "label": "Romanian; Moldavian; Moldovan", "value": "ro" }{ "label": "Romansh", "value": "rm" }{ "label": "Rundi", "value": "rn" }{ "label": "Russian", "value": "ru" }{ "label": "Samoan", "value": "sm" }{ "label": "Sango", "value": "sg" }{ "label": "Sanskrit", "value": "sa" }{ "label": "Sardinian", "value": "sc" }{ "label": "Serbian", "value": "sr" }{ "label": "Shona", "value": "sn" }{ "label": "Sichuan Yi; Nuosu", "value": "ii" }{ "label": "Sindhi", "value": "sd" }{ "label": "Sinhala; Sinhalese", "value": "si" }{ "label": "Slovak", "value": "sk" }{ "label": "Slovenian", "value": "sl" }{ "label": "Somali", "value": "so" }{ "label": "Sotho, Southern", "value": "st" }{ "label": "Spanish; Castilian", "value": "es" }{ "label": "Sundanese", "value": "su" }{ "label": "Swahili", "value": "sw" }{ "label": "Swati", "value": "ss" }{ "label": "Swedish", "value": "sv" }{ "label": "Tagalog", "value": "tl" }{ "label": "Tahitian", "value": "ty" }{ "label": "Tajik", "value": "tg" }{ "label": "Tamil", "value": "ta" }{ "label": "Tatar", "value": "tt" }{ "label": "Telugu", "value": "te" }{ "label": "Thai", "value": "th" }{ "label": "Tibetan", "value": "bo" }{ "label": "Tigrinya", "value": "ti" }{ "label": "Tonga (Tonga Islands)", "value": "to" }{ "label": "Tsonga", "value": "ts" }{ "label": "Tswana", "value": "tn" }{ "label": "Turkish", "value": "tr" }{ "label": "Turkmen", "value": "tk" }{ "label": "Twi", "value": "tw" }{ "label": "Uighur; Uyghur", "value": "ug" }{ "label": "Ukrainian", "value": "uk" }{ "label": "Urdu", "value": "ur" }{ "label": "Uzbek", "value": "uz" }{ "label": "Venda", "value": "ve" }{ "label": "Vietnamese", "value": "vi" }{ "label": "Volapük", "value": "vo" }{ "label": "Walloon", "value": "wa" }{ "label": "Welsh", "value": "cy" }{ "label": "Western Frisian", "value": "fy" }{ "label": "Wolof", "value": "wo" }{ "label": "Xhosa", "value": "xh" }{ "label": "Yiddish", "value": "yi" }{ "label": "Yoruba", "value": "yo" }{ "label": "Zhuang; Chuang", "value": "za" }{ "label": "Zulu", "value": "zu" }
Use Content As Indexable TextuseContentAsIndexableTextboolean

Whether to use the uploaded content as indexable text.

Supports All DrivessupportsAllDrivesboolean

Whether to include shared drives. Set to 'true' if saving to a shared drive.
Defaults to 'false' if left blank.

Content Hints Indexable TextcontentHintsIndexableTextstring

Text to be indexed for the file to improve fullText queries. This is limited to 128KB in
length and may contain HTML elements.

Content Restrictions Read OnlycontentRestrictionsReadOnlyboolean

Whether the content of the file is read-only. If a file is read-only, a new revision of
the file may not be added, comments may not be added or modified, and the title of the file
may not be modified.

Content Restrictions ReasoncontentRestrictionsReasonstring

Reason for why the content of the file is restricted. This is only mutable on requests
that also set readOnly=true.

Copy Requires Writer PermissioncopyRequiresWriterPermissionboolean

Whether the options to copy, print, or download this file, should be disabled for
readers and commenters.

Descriptiondescriptionstring

A short description of the file.

Folder Color RGBfolderColorRgbstring

The color for a folder as an RGB hex string. If an unsupported color is specified,
the closest color in the palette will be used instead.

Mime TypemimeTypestringSelect a value from the drop down menu.
Namenamestring

Name of the file

Original FilenameoriginalFilenamestring

The original filename of the uploaded content if available, or else the original value of the name field. This is only available for files with binary content in Google Drive.

Shortcut Details Target IDshortcutDetailsTargetIdstring

The ID of the file that this shortcut points to.

Starredstarredboolean

Whether the user has starred the file.

Writers Can SharewritersCanShareboolean

Whether users with only writer permission can modify the file's permissions. Not populated for items in shared drives.

Action Authentication

Google Drive uses OAuth authentication. When you connect your Google Drive account, Pipedream will open a popup window where you can sign into Google Drive and grant Pipedream permission to connect to your account. Pipedream securely stores and automatically refreshes the OAuth tokens so you can easily authenticate any Google Drive API.

Pipedream requests the following authorization scopes when you connect your account:

emailprofilehttps://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.readonly

About Google Drive

Internet-related services and products

About Pipedream

Stop writing boilerplate code, struggling with authentication and managing infrastructure. Start connecting APIs with code-level control when you need it — and no code when you don't.

Into to Pipedream
Watch us build a workflow
Watch us build a workflow
4 min
Watch now ➜
"The past few weeks, I truly feel like the clichéd 10x engineer."
@heyellieday
Powerful features that scale
Manage concurrency and execution rate
Manage concurrency and execution rate

Queue up to 10,000 events per workfow and manage the concurrency and rate at which workflows are triggered.

Process large payloads up to 5 terabytes
Process large payloads up to 5 terabytes

Large file support enables you to trigger workflows with any data (e.g., large JSON files, images and videos) up to 5 terabytes.

Return custom responses to HTTP requests
Return custom responses to HTTP requests

Return any JSON-serializable response from an HTTP triggered workflow using $respond().

Use most npm packages
Use most npm packages

To use any npm package, just require() it -- there's no npm install or package.json required.

Maintain state between executions
Maintain state between executions

Use $checkpoint to save state in one workflow invocation and read it the next time your workflow runs.

Pass data between steps
Pass data between steps

Return data from any step to inspect it in a human-friendly way and reference the data in future steps via the steps object.