Last active
October 3, 2019 06:00
-
-
Save PrashantBhatasana/de6e07ca7552134c5437e761b078f81c to your computer and use it in GitHub Desktop.
This is a groovy file to connect google sheet API and read data from googlesheet. https://medium.com/appgambit/integrating-google-sheet-with-katalon-studio-f72936511c27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.java.utilily | |
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint | |
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase | |
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData | |
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject | |
import com.google.api.client.util.store.FileDataStoreFactory | |
import com.kms.katalon.core.annotation.Keyword | |
import com.kms.katalon.core.checkpoint.Checkpoint | |
import com.kms.katalon.core.checkpoint.CheckpointFactory | |
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords | |
import com.kms.katalon.core.model.FailureHandling | |
import com.kms.katalon.core.testcase.TestCase | |
import com.kms.katalon.core.testcase.TestCaseFactory | |
import com.kms.katalon.core.testdata.TestData | |
import com.kms.katalon.core.testdata.TestDataFactory | |
import com.kms.katalon.core.testobject.ObjectRepository | |
import com.kms.katalon.core.testobject.TestObject | |
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords | |
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords | |
import MobileBuiltInKeywords as Mobile | |
import WSBuiltInKeywords as WS | |
import WebUiBuiltInKeywords as WebUI | |
import org.openqa.selenium.WebElement | |
import org.openqa.selenium.WebDriver | |
import org.openqa.selenium.By | |
import com.kms.katalon.core.testobject.RequestObject | |
import com.kms.katalon.core.testobject.ResponseObject | |
import com.kms.katalon.core.testobject.ConditionType | |
import com.kms.katalon.core.testobject.TestObjectProperty | |
import com.kms.katalon.core.mobile.helper.MobileElementCommonHelper | |
import com.kms.katalon.core.util.KeywordUtil | |
import com.kms.katalon.core.webui.exception.WebElementNotFoundException | |
import com.google.api.client.auth.oauth2.Credential; | |
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; | |
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; | |
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; | |
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; | |
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; | |
import com.google.api.client.http.HttpTransport | |
import com.google.api.client.http.javanet.NetHttpTransport; | |
import com.google.api.client.json.JsonFactory; | |
import com.google.api.client.json.jackson2.JacksonFactory; | |
import com.google.api.services.sheets.v4.Sheets; | |
import com.google.api.services.sheets.v4.SheetsScopes; | |
import com.google.api.services.sheets.v4.model.ValueRange; | |
import java.io.FileNotFoundException; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.security.GeneralSecurityException; | |
import java.util.Collections; | |
import java.util.List; | |
class ReadSpreadsheet { | |
private static final String APPLICATION_NAME = "< Application Name of Google API >"; | |
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); | |
private static final String TOKENS_DIRECTORY_PATH = "tokens"; | |
private static final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS_READONLY); | |
private static final String CREDENTIALS_FILE_PATH = "< Your client_secret.json file path >"; | |
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { | |
// Load client secrets. | |
InputStream in1 = ReadSpreadsheet.class.getResourceAsStream(CREDENTIALS_FILE_PATH); | |
if (in1 == null) { | |
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); | |
} | |
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in1)); | |
// Build flow and trigger user authorization request. | |
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, | |
clientSecrets, SCOPES) | |
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH))) | |
.setAccessType("offline").build(); | |
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8889).build(); | |
return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); | |
} | |
@Keyword | |
public static List<List<Object>> getSpreadSheetRecords(String range) throws IOException, GeneralSecurityException { | |
// Build a new authorized API client service. | |
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); | |
final String spreadsheetId = "< Your google sheet ID >"; | |
Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT)) | |
.setApplicationName(APPLICATION_NAME).build(); | |
ValueRange response = service.spreadsheets().values().get(spreadsheetId, range).execute(); | |
List<List<Object>> values = response.getValues(); | |
if (values == null || values.isEmpty()) { | |
System.out.println("No data found."); | |
return null; | |
} else { | |
return values; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment