Create a file supplemental product data source

  • 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 FetchSettings are not set, the file input type will be UPLOAD , 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();  
 
 

Python

  # -*- coding: utf-8 -*- 
 # 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 
 # 
 #     http://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. 
 """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. 
 """ 
 from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 CreateDataSourceRequest 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 DataSource 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 DataSourcesServiceClient 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 FileInput 
 from 
  
 google.shopping.merchant_datasources_v1 
  
 import 
 SupplementalProductDataSource 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 _PARENT 
 = 
 f 
 "accounts/ 
 { 
 _ACCOUNT 
 } 
 " 
 def 
  
 create_file_supplemental_product_data_source 
 (): 
  
 """Creates a `DataSource` resource.""" 
 # Gets OAuth Credentials. 
 credentials 
 = 
 generate_user_credentials 
 . 
 main 
 () 
 # Creates a client. 
 client 
 = 
 DataSourcesServiceClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # If FetchSettings are not set, then this will be an `UPLOAD` file type 
 # that you must manually upload via the Merchant Center UI or via SFTP. 
 file_input 
 = 
 FileInput 
 () 
 file_input 
 . 
 file_name 
 = 
 ( 
 "British T-shirts Supplemental Product Data.txt" 
 ) 
 # Creates a SupplementalProductDataSource. 
 supplemental_datasource 
 = 
 SupplementalProductDataSource 
 () 
 supplemental_datasource 
 . 
 content_language 
 = 
 "en" 
 supplemental_datasource 
 . 
 feed_label 
 = 
 "GB" 
 # Creates a DataSource and populates its attributes. 
 data_source 
 = 
 DataSource 
 () 
 data_source 
 . 
 display_name 
 = 
 "Example Supplemental DataSource" 
 data_source 
 . 
 supplemental_product_data_source 
 = 
 supplemental_datasource 
 data_source 
 . 
 file_input 
 = 
 file_input 
 # Creates the request. 
 request 
 = 
 CreateDataSourceRequest 
 ( 
 parent 
 = 
 _PARENT 
 , 
 data_source 
 = 
 data_source 
 ) 
 # Makes the request and catches and prints any error messages. 
 try 
 : 
 response 
 = 
 client 
 . 
 create_data_source 
 ( 
 request 
 = 
 request 
 ) 
 print 
 ( 
 f 
 "DataSource successfully created: 
 { 
 response 
 } 
 " 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 print 
 ( 
 "DataSource creation failed" 
 ) 
 print 
 ( 
 e 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 create_file_supplemental_product_data_source 
 () 
  
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: