-
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Create.ino
123 lines (95 loc) · 4.01 KB
/
Create.ino
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/**
* Created by K. Suwatchai (Mobizt)
*
* Email: suwatchai@outlook.com
*
* Github: https://github.com/mobizt
*
* Copyright (c) 2021 mobizt
*
*/
// This example shows how to create the spreadsheet.
#include <Arduino.h>
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
#include <ESP_Google_Sheet_Client.h>
#define WIFI_SSID "WIFI_AP"
#define WIFI_PASSWORD "WIFI_PASSWORD"
// For how to create Service Account and how to use the library, go to https://github.com/mobizt/ESP-Google-Sheet-Client
#define PROJECT_ID "PROJECT_ID"
// Service Account's client email
#define CLIENT_EMAIL "CLIENT_EMAIL"
// Your email to share access to spreadsheet
#define USER_EMAIL "USER_EMAIL"
// Service Account's private key
const char PRIVATE_KEY[] PROGMEM = "-----BEGIN PRIVATE KEY-----XXXXXXXXXXXX-----END PRIVATE KEY-----\n";
bool taskComplete = false;
void tokenStatusCallback(TokenInfo info);
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.printf("ESP Google Sheet Client v%s\n\n", ESP_GOOGLE_SHEET_CLIENT_VERSION);
WiFi.setAutoReconnect(true);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
// Set the callback for Google API access token generation status (for debug only)
GSheet.setTokenCallback(tokenStatusCallback);
// Begin the access token generation for Google API authentication
GSheet.begin(CLIENT_EMAIL, PROJECT_ID, PRIVATE_KEY);
}
void loop()
{
// Call ready() repeatedly in loop for authentication checking and processing
bool ready = GSheet.ready();
if (ready && !taskComplete)
{
// For basic FirebaseJson usage example, see examples/FirebaseJson/Create_Edit_Parse/Create_Edit_Parse.ino
FirebaseJson response;
// Instead of using FirebaseJson for response, you can use String for response to the functions
// especially in low memory device that deserializing large JSON response may be failed as in ESP8266
Serial.println("\nCreate spreadsheet...");
Serial.println("------------------------");
FirebaseJson spreadsheet;
spreadsheet.set("properties/title", "New GSheet");
spreadsheet.set("sheets/properties/title", "New Sheet");
spreadsheet.set("sheets/properties/sheetId", 1);
spreadsheet.set("sheets/properties/sheetType", "GRID");
spreadsheet.set("sheets/properties/sheetType", "GRID");
spreadsheet.set("sheets/properties/gridProperties/rowCount", 20);
spreadsheet.set("sheets/properties/gridProperties/columnCount", 10);
spreadsheet.set("sheets/developerMetadata/[0]/metadataValue", "test_value");
spreadsheet.set("sheets/developerMetadata/[0]/metadataKey", "test_yey");
spreadsheet.set("sheets/developerMetadata/[0]/visibility", "DOCUMENT");
// For Google Sheet API ref doc, go to https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/create
bool success = GSheet.create(&response /* returned response */, &spreadsheet /* spreadsheet object */, USER_EMAIL /* your email that this spreadsheet shared to */);
response.toString(Serial, true);
Serial.println();
taskComplete = true;
}
}
void tokenStatusCallback(TokenInfo info)
{
if (info.status == esp_signer_token_status_error)
{
Serial.printf("Token info: type = %s, status = %s\n", GSheet.getTokenType(info).c_str(), GSheet.getTokenStatus(info).c_str());
Serial.printf("Token error: %s\n", GSheet.getTokenError(info).c_str());
}
else
{
Serial.printf("Token info: type = %s, status = %s\n", GSheet.getTokenType(info).c_str(), GSheet.getTokenStatus(info).c_str());
}
}