Skip to content

keboola/google-drive-writer

Repository files navigation

Google Drive Writer Component

GitHub Actions

Keboola component that writes data from Keboola Storage tables into Google Drive. Supports:

  • Creating new files or updating existing ones
  • CSV files and Google Sheets formats
  • Configurable file conversion and permissions

Example configuration

{
  "authorization": {
    "oauth_api": {
      "id": "keboola.wr-google-drive-abc-def",
      "version": 3
    }
  },
  "parameters": {
    "tables": [
      {
        "id": 123,
        "action": "create",
        "enabled": true,
        "convert": false,
        "tableId": "in.c-test.table",
        "title": "table"
      }
    ]
  },
  "storage": {
    "input": {
      "tables": [
        {
          "source": "in.c-test.table",
          "destination": "in.c-test.table.csv",
          "where_column": "",
          "where_values": [],
          "where_operator": "eq",
          "columns": []
        }
      ]
    }
  }
}

OAuth Registration

Note that this writer is using Keboola OAuth Bundle to store OAuth credentials.

  1. Create application in Google Developer console.
  • Enable APIs: Google Drive API, Google Sheets API
  • Go to Credentials section and create new credentials of type OAuth Client ID. Use https://SYRUP_INSTANCE.keboola.com/oauth-v2/authorize/keboola.ex-google-drive/callback as redirec URI.
  1. Register application in Keboola OAuth http://docs.oauthv2.apiary.io/#reference/manage/addlist-supported-api/add-new-component
{
    "component_id": "keboola.ex-google-drive",
    "friendly_name": "Google Drive Extractor",
    "app_key": "XXX.apps.googleusercontent.com",
    "app_secret": "",
    "auth_url": "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_uri=%%redirect_uri%%&client_id=%%client_id%%&access_type=offline&prompt=consent&scope=https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets.readonly",
    "token_url": "https://www.googleapis.com/oauth2/v4/token",
    "oauth_version": "2.0"
}

Development

App is developed on localhost using TDD.

  1. Clone from repository: git clone git@github.com:keboola/google-drive-writer.git
  2. Change directory: cd google-drive-writer
  3. Install dependencies: docker compose run --rm dev composer install
  4. You will need working OAuth credentials.
    • Go to Googles OAuth 2.0 Playground.
    • In the configuration (the cog wheel on the top right side) check Use your own OAuth credentials and paste your OAuth Client ID and Secret.
    • Go through the authorization flow and generate Access and Refresh tokens. Copy and paste them into the .env file.
  5. Run the tests: docker compose run --rm dev composer tests

Running locally

  1. Create a data directory with config.json (see Example configuration above)
  2. Add your input CSV files to data/in/tables/
  3. Run the component: docker compose run --rm dev php src/run.php --data=/data

License

MIT licensed, see LICENSE file.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 7