What do you want to automate

with Google Appsheet and Google Cloud Document AI?

Prompt, edit and deploy AI agents that connect to Google Appsheet, Google Cloud Document AI and 3,000+ other apps in seconds.

Trusted by 1,000,000+ developers from startups to Fortune 500 companies

Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Add Row with the Google Appsheet API

Adds a new row to a specific table in the AppSheet app. See the documentation

 
Try it
Delete Row with the Google Appsheet API

Deletes a specific row from a table in the AppSheet app. See the documentation

 
Try it
Get Rows with the Google Appsheet API

Read existing records in a table in the AppSheet app. See the documentation

 
Try it
Update Row with the Google Appsheet API

Updates an existing row in a specific table in the AppSheet app. See the documentation

 
Try it
Integrate the Google Appsheet API with the Google Cloud Document AI API
Setup the Google Appsheet API trigger to run a workflow which integrates with the Google Cloud Document AI API. Pipedream's integration platform allows you to integrate Google Appsheet and Google Cloud Document AI remarkably fast. Free for developers.

Overview of Google Appsheet

The Google Appsheet API enables programmatic interactions with your custom AppSheet applications, allowing you to streamline processes, automate actions, and interlink your apps with other services. Leveraging Pipedream's powerful serverless platform, you can create workflows that react to events in real-time, automate tasks, and connect to countless other services with minimal effort. Whether you're updating datasets, syncing with external systems, or triggering complex chains of actions, combining AppSheet with Pipedream can supercharge your productivity and enhance your app's capabilities.

Connect Google Appsheet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { axios } from "@pipedream/platform"
export default defineComponent({
  props: {
    google_appsheet: {
      type: "app",
      app: "google_appsheet",
    }
  },
  async run({steps, $}) {
    const data = {
      "Action": "Find",
      "Properties": `{
          "Locale": "en-US",
          "Selector": "Filter(Sheet1, true)",
          "Timezone":
          "Pacific Standard Time"
      }`,
    }
    return await axios($, {
      method: "post",
      url: `https://api.appsheet.com/api/v2/apps/${this.google_appsheet.$auth.app_id}/tables/{{your_table_here}}/Action`,
      headers: {
        "ApplicationAccessKey": `${this.google_appsheet.$auth.access_key}`,
      },
      data,
    })
  },
})

Connect Google Cloud Document AI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import { DocumentProcessorServiceClient } from '@google-cloud/documentai/build/src/v1/index.js';
import { promises as fs } from 'fs';
import { get } from 'https';
import { writeFile } from 'fs/promises';
import { join } from 'path';

export default defineComponent({
  props: {
    google_cloud_document_ai: {
      type: "app",
      app: "google_cloud_document_ai",
    }
  },
  async run({ steps, $ }) {
    //Sample pdf file to process by Google Document AI API
    const url = 'https://www.learningcontainer.com/wp-content/uploads/2019/09/sample-pdf-file.pdf';
    const filePath = join('/tmp', 'my_document.pdf');

    const downloadFile = async () => {
      const res = await new Promise((resolve) => get(url, resolve));
      const chunks = [];

      for await (const chunk of res) {
        chunks.push(chunk);
      }

      await writeFile(filePath, Buffer.concat(chunks));
      console.log(`File downloaded successfully to ${filePath}`);
    };

    await downloadFile();

    const projectId = this.google_cloud_document_ai.$auth.project_id;
    const location = this.google_cloud_document_ai.$auth.location;
    const processorId = this.google_cloud_document_ai.$auth.processor_id;

    // Instantiates a client
    // apiEndpoint regions available: eu-documentai.googleapis.com, us-documentai.googleapis.com (Required if using eu based processor)
    // const client = new DocumentProcessorServiceClient({apiEndpoint: 'eu-documentai.googleapis.com'});
    const client = new DocumentProcessorServiceClient();

    async function testRequest() {
      // The full resource name of the processor, e.g.:
      // projects/project-id/locations/location/processor/processor-id
      // You must create new processors in the Cloud Console first
      const name = `projects/${projectId}/locations/${location}/processors/${processorId}`;

      // Read the file into memory.		
      const imageFile = await fs.readFile(filePath);

      // Convert the image data to a Buffer and base64 encode it.
      const encodedImage = Buffer.from(imageFile).toString('base64');

      const request = {
        name,
        rawDocument: {
          content: encodedImage,
          mimeType: 'application/pdf',
        },
      };

      // Recognizes text entities in the PDF document
      const [result] = await client.processDocument(request);
      const { document } = result;

      // Get all of the document text as one big string
      const { text } = document;

      // Extract shards from the text field
      const getText = textAnchor => {
        if (!textAnchor.textSegments || textAnchor.textSegments.length === 0) {
          return '';
        }

        // First shard in document doesn't have startIndex property
        const startIndex = textAnchor.textSegments[0].startIndex || 0;
        const endIndex = textAnchor.textSegments[0].endIndex;

        return text.substring(startIndex, endIndex);
      };

      // Read the text recognition output from the processor
      const [page1] = document.pages;
      const { paragraphs } = page1;
      let concatenatedText = "";
      for (const paragraph of paragraphs) {
        const paragraphText = getText(paragraph.layout.textAnchor);
        concatenatedText += paragraphText;
      }
      return concatenatedText;
    }

    return await testRequest();
  }
})

Trusted by 1,000,000+ developers from startups to Fortune 500 companies

Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo