Page Summary
-
This code demonstrates creating a File Supplemental product data source for the "en" content language and "GB" feed label combination.
-
The supplemental feed can be linked to a wildcard primary feed or a primary feed with the same "en" content language and "GB" feed label combination.
-
If
FetchSettingsare not set, the file input type will beUPLOAD, which requires manual file upload via the Merchant Center UI. -
The file input requires a file name, such as "British T-shirts Supplemental Data" for UPLOAD type.
-
The code examples are available in Java, PHP, and Python, and they all follow the same basic principles for creating the supplemental product data source.
Merchant API code sample to create a file supplemental product data source.
Java
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
shopping.merchant.samples.datasources.v1
;
import
com.google.api.gax.core.FixedCredentialsProvider
;
import
com.google.auth.oauth2.GoogleCredentials
;
import
com.google.shopping.merchant.datasources.v1.CreateDataSourceRequest
;
import
com.google.shopping.merchant.datasources.v1.DataSource
;
import
com.google.shopping.merchant.datasources.v1.DataSourcesServiceClient
;
import
com.google.shopping.merchant.datasources.v1.DataSourcesServiceSettings
;
import
com.google.shopping.merchant.datasources.v1.FileInput
;
import
com.google.shopping.merchant.datasources.v1.SupplementalProductDataSource
;
import
shopping.merchant.samples.utils.Authenticator
;
import
shopping.merchant.samples.utils.Config
;
/**
* This class demonstrates how to create a File Supplemental product datasource for the "en" and
* "GB" `feedLabel` and `contentLanguage` combination. This supplemental feed is eligible to be
* linked to both a multiple-label primary feed and/or a primary feed with the same `feedLabel` and
* `contentLanguage` combination.
*/
public
class
CreateFileSupplementalProductDataSourceSample
{
private
static
String
getParent
(
String
merchantId
)
{
return
String
.
format
(
"accounts/%s"
,
merchantId
);
}
private
static
FileInput
setFileInput
()
{
// If FetchSettings are not set, then this will be an `UPLOAD` file type
// that you must manually upload via the Merchant Center UI.
return
FileInput
.
newBuilder
()
// FileName is required for `UPLOAD` fileInput type.
.
setFileName
(
"British T-shirts Supplemental Data"
)
.
build
();
}
public
static
String
createDataSource
(
Config
config
,
String
displayName
,
FileInput
fileInput
)
throws
Exception
{
GoogleCredentials
credential
=
new
Authenticator
().
authenticate
();
DataSourcesServiceSettings
dataSourcesServiceSettings
=
DataSourcesServiceSettings
.
newBuilder
()
.
setCredentialsProvider
(
FixedCredentialsProvider
.
create
(
credential
))
.
build
();
String
parent
=
getParent
(
config
.
getAccountId
().
toString
());
try
(
DataSourcesServiceClient
dataSourcesServiceClient
=
DataSourcesServiceClient
.
create
(
dataSourcesServiceSettings
))
{
CreateDataSourceRequest
request
=
CreateDataSourceRequest
.
newBuilder
()
.
setParent
(
parent
)
.
setDataSource
(
DataSource
.
newBuilder
()
.
setDisplayName
(
displayName
)
.
setSupplementalProductDataSource
(
SupplementalProductDataSource
.
newBuilder
()
.
setContentLanguage
(
"en"
)
.
setFeedLabel
(
"GB"
)
.
build
())
.
setFileInput
(
fileInput
)
.
build
())
.
build
();
System
.
out
.
println
(
"Sending create SupplementalProduct DataSource request"
);
DataSource
response
=
dataSourcesServiceClient
.
createDataSource
(
request
);
System
.
out
.
println
(
"Created DataSource Name below"
);
System
.
out
.
println
(
response
.
getName
());
return
response
.
getName
();
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
System
.
exit
(
1
);
// Null is necessary to satisfy the compiler as we're not returning a String on failure.
return
null
;
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
Config
config
=
Config
.
load
();
// The displayed datasource name in the Merchant Center UI.
String
displayName
=
"British File Supplemental Product Data"
;
// The file input data that this datasource will receive.
FileInput
fileInput
=
setFileInput
();
createDataSource
(
config
,
displayName
,
fileInput
);
}
}
PHP
< ?php
/**
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once __DIR__ . '/../../../vendor/autoload.php';
require_once __DIR__ . '/../../Authentication/Authentication.php';
require_once __DIR__ . '/../../Authentication/Config.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\DataSources\V1\Client\DataSourcesServiceClient;
use Google\Shopping\Merchant\DataSources\V1\CreateDataSourceRequest;
use Google\Shopping\Merchant\DataSources\V1\DataSource;
use Google\Shopping\Merchant\DataSources\V1\FileInput;
use Google\Shopping\Merchant\DataSources\V1\SupplementalProductDataSource;
/**
* This class demonstrates how to create a File Supplemental product datasource for the "en" and
* "GB" `feedLabel` and `contentLanguage` combination. This supplemental feed is eligible to be
* linked to both a multiple-label primary feed and/or a primary feed with the same `feedLabel` and
* `contentLanguage` combination.
*/
class CreateFileSupplementalProductDataSourceSample
{
private static function getFileInput(): FileInput
{
// If FetchSettings is not set, then this will be an `UPLOAD` file type
// that you must manually upload via the Merchant Center UI.
return (new FileInput())
// FileName is required for `UPLOAD` fileInput type.
->setFileName('British T-shirts Supplemental Data');
}
/**
* Creates a new supplemental product data source.
*
* @param string $merchantId The Merchant Center account ID.
* @param string $displayName The displayed data source name in the Merchant Center UI.
* @param FileInput $fileInput The file input data that this data source will receive.
* @return string The name of the newly created data source.
*/
public static function createDataSource(string $merchantId, string $displayName, FileInput $fileInput): string
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$dataSourcesServiceClient = new DataSourcesServiceClient($options);
// The parent account of the data source.
$parent = sprintf('accounts/%s', $merchantId);
// Creates the create data source request.
$request = (new CreateDataSourceRequest())
->setParent($parent)
->setDataSource(
(new DataSource())
->setDisplayName($displayName)
->setSupplementalProductDataSource(
(new SupplementalProductDataSource())
->setContentLanguage('en')
->setFeedLabel('GB')
)
->setFileInput($fileInput)
);
print('Sending create Supplemental Product DataSource request' . PHP_EOL);
try {
// Makes the API call.
$response = $dataSourcesServiceClient->createDataSource($request);
print('Created DataSource Name below' . PHP_EOL);
print($response->getName() . PHP_EOL);
return $response->getName();
} catch (ApiException $ex) {
print('Call failed with message: ' . $ex->getMessage() . PHP_EOL);
exit(1);
}
}
// Helper to execute the sample.
function callSample(): void
{
$config = Config::generateConfig();
// The Merchant Center Account ID.
$merchantId = $config['accountId'];
// The displayed datasource name in the Merchant Center UI.
$displayName = 'British Regional Inventory File';
$fileInput = self::getFileInput();
$this->createDataSource($merchantId, $displayName, $fileInput);
}
}
$sample = new CreateFileSupplementalProductDataSourceSample();
$sample->callSample();

