Skip to content

Commit ac8b8b9

Browse files
committed
Add a new DataFrame::renameEach()
1 parent 2b2872c commit ac8b8b9

8 files changed

Lines changed: 45 additions & 16 deletions

File tree

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@
204204
},
205205
"extra": {
206206
"google/apiclient-services": [
207+
"Drive",
207208
"Sheets"
208209
]
209210
},

composer.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

documentation/components/adapters/google-sheet.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ $service = google_sheets(
7171
);
7272

7373
$sheetName = 'Flow test sheet';
74-
$spreadsheetId = google_create_spreadsheet(
74+
$spreadsheet = google_create_spreadsheet(
7575
$service,
7676
'Flow test spreadsheet',
7777
$sheetName,
78+
'random@gmail.com'
7879
);
7980

8081
(new Flow())
@@ -89,6 +90,6 @@ $spreadsheetId = google_create_spreadsheet(
8990
)
9091
)
9192
)
92-
->write(to_google_sheet($service, $spreadsheetId, $sheetName))
93+
->write(to_google_sheet($service, $spreadsheet->spreadsheetId, $sheetName))
9394
->run();
9495
```

examples/topics/data_reading/google_sheet/code.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
Sheets::SPREADSHEETS
2020
);
2121

22-
$spreadsheetId = google_create_spreadsheet(
22+
$spreadsheet = google_create_spreadsheet(
2323
$service,
2424
'Flow test spreadsheet',
2525
$sheetName = 'Flow test sheet',
26+
'random@gmail.com'
2627
);
2728

2829
data_frame()
@@ -34,10 +35,10 @@
3435
['id' => 5, 'text' => 'lorem ipsum'],
3536
['id' => 6, 'text' => 'lorem ipsum'],
3637
]))
37-
->write(to_google_sheet($service, $spreadsheetId, $sheetName))
38+
->write(to_google_sheet($service, $spreadsheet->spreadsheetId, $sheetName))
3839
->run();
3940

4041
data_frame()
41-
->read(from_google_sheet($service, $spreadsheetId, $sheetName))
42+
->read(from_google_sheet($service, $spreadsheet->spreadsheetId, $sheetName))
4243
->write(to_stream(__DIR__ . '/output.txt', truncate: false))
4344
->run();

examples/topics/data_writing/google_sheet/code.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
Sheets::SPREADSHEETS
2020
);
2121

22-
$spreadsheetId = google_create_spreadsheet(
22+
$spreadsheet = google_create_spreadsheet(
2323
$service,
2424
'Flow test spreadsheet',
2525
$sheetName = 'Flow test sheet',
26+
'random@gmail.com'
2627
);
2728

2829
data_frame()
@@ -34,7 +35,7 @@
3435
['id' => 5, 'text' => 'lorem ipsum'],
3536
['id' => 6, 'text' => 'lorem ipsum'],
3637
]))
37-
->write(to_google_sheet($service, $spreadsheetId, $sheetName))
38+
->write(to_google_sheet($service, $spreadsheet->spreadsheetId, $sheetName))
3839
->run();
3940

4041
data_frame()

src/adapter/etl-adapter-google-sheet/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
},
3939
"extra": {
4040
"google/apiclient-services": [
41+
"Drive",
4142
"Sheets"
4243
]
4344
},

src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/DSL/functions.php

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
use Flow\ETL\Attribute\{DocumentationDSL, Module, Type};
88
use Google\Client;
9-
use Google\Service\Sheets;
9+
use Google\Service\Drive\Permission;
10+
use Google\Service\{Drive, Sheets};
1011

1112
/**
1213
* @param array{type: string, project_id: string, private_key_id: string, private_key: string, client_email: string, client_id: string, auth_uri: string, token_uri: string, auth_provider_x509_cert_url: string, client_x509_cert_url: string}|Sheets $auth_config
@@ -116,8 +117,12 @@ function google_sheets(string|array $auth_config, string|array $scopes) : Sheets
116117
}
117118

118119
#[DocumentationDSL(module: Module::GOOGLE_SHEET, type: Type::HELPER)]
119-
function google_create_spreadsheet(array|Sheets $auth_config, string $spreadsheet_name, string $sheet_name) : string
120-
{
120+
function google_create_spreadsheet(
121+
array|Sheets $auth_config,
122+
string $spreadsheet_name,
123+
string $sheet_name,
124+
string $shareWithEmail,
125+
) : Sheets\Spreadsheet {
121126
if ($auth_config instanceof Sheets) {
122127
$sheets = $auth_config;
123128
} else {
@@ -139,5 +144,21 @@ function google_create_spreadsheet(array|Sheets $auth_config, string $spreadshee
139144
])
140145
);
141146

142-
return $spreadsheet->spreadsheetId;
147+
// Ensure required drive scope is applied
148+
$sheets->getClient()->addScope(Drive::DRIVE);
149+
150+
$drive = new Drive($sheets->getClient());
151+
$drive->permissions->create(
152+
$spreadsheet->spreadsheetId,
153+
new Permission(
154+
[
155+
'type' => 'user',
156+
'role' => 'reader',
157+
'emailAddress' => $shareWithEmail,
158+
]
159+
),
160+
['fields' => 'id']
161+
);
162+
163+
return $spreadsheet;
143164
}

src/adapter/etl-adapter-google-sheet/tests/Flow/ETL/Adapter/GoogleSheet/Tests/Integration/GoogleSheetTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,15 @@ protected function setUp() : void
4040
self::markTestSkipped('auth.json.dist file contains not valid JSON');
4141
}
4242

43-
$this->spreadsheetId = google_create_spreadsheet(
43+
$spreadsheet = google_create_spreadsheet(
4444
$this->service,
4545
'Flow test spreadsheet',
4646
self::SHEET_NAME,
47+
'random@gmail.com'
4748
);
4849

50+
$this->spreadsheetId = $spreadsheet->spreadsheetId;
51+
4952
$this->clearTestSheet();
5053
}
5154

0 commit comments

Comments
 (0)