Cara membaca data dari google spreadsheet menggunakan java

Banyak aplikasi harus menampilkan data statistik di dalam aplikasi mereka dan mereka menyimpan semua data mereka di file excel atau spreadsheet. Tetapi tidak setiap saat memungkinkan untuk menambahkan seluruh data dalam database untuk digunakan di dalam aplikasi kita. Pada artikel ini, kita akan melihat membaca data ini dari lembar Excel kami di Aplikasi Android di Android Studio.  

Apa yang akan kita bangun di artikel ini?

Kami akan membuat aplikasi sederhana di mana kami akan menampilkan data dari lembar excel yang telah kami buat dan kami akan membaca entri dari lembar excel tersebut dan menampilkan daftar data tersebut dalam tampilan pendaur ulang kami. Contoh video diberikan di bawah ini untuk mendapatkan gambaran tentang apa yang akan kita lakukan di artikel ini. Perhatikan bahwa kami akan menerapkan proyek ini menggunakan bahasa Java.

https. //media. geeksforgeeks. org/wp-content/uploads/20210305144209/Screenrecorder-2021-03-05-14-41-07-147. mp4

Hingga hari ini, untuk melakukan pengujian berbasis data, kami telah menggunakan pustaka seperti Apache POI, JExcel dll untuk membaca/menulis file Excel. Untuk bekerja dengan pustaka ini, kami harus membuat spreadsheet, menyimpannya di repositori, dan kami perlu menulis banyak kode untuk mengakses spreadsheet dan menguji semua skenario yang bergantung pada data

Ini menjadi masalah dalam pemeliharaan skrip pengujian otomasi saat data pengujian bertambah dan terus menambahkan file ke kerangka kerja. Setiap kali kami memperbarui data pengujian, kami harus check-out / check-in dari kerangka kerja untuk memastikan pengujian kami berfungsi

Alih-alih menyediakannya secara fisik, kami dapat membuat spreadsheet google untuk menyimpan data pengujian dan mengakses data menggunakan Google Sheets API.

Mengapa Google Spreadsheet?

1. Kami dapat mempertahankan banyak spreadsheet yang akan menjadi pusat penyimpanan untuk Data Uji otomasi
2. Kami tidak check-out/Check-in untuk mengubah/memperbarui data pengujian
3. Jumlah kode yang lebih sedikit diperlukan untuk mendapatkan data, Google API memudahkan kami
4. Jika Anda ingin membagikan data pengujian ini, bagikan saja URL-nya
5. Tidak ada kehilangan data

Memulai dengan Google Sheets API

Google Sheets adalah aplikasi spreadsheet online yang memungkinkan pengguna membuat dan memformat spreadsheet dan secara bersamaan bekerja dengan anggota tim lainnya

Kami akan mencoba mengakses data spreadsheet menggunakan Google Sheets API v4. Dengan menggunakan API ini, kode kami dapat mengakses dan memperbarui spreadsheet seperti pengguna lainnya

Prasyarat

1. Jawa 1. 7 atau lebih
2. Tingkat 2. 3 atau lebih besar / Maven
3. akun Google

Langkah penting sebelum lanjut ke contoh, kita harus mengaktifkan Google Sheets API terlebih dahulu

a. Gunakan wisaya Konsol Pengembang Google untuk membuat atau memilih proyek dan mengaktifkan API secara otomatis. Klik Lanjutkan, lalu Buka kredensial

b. Pada halaman Tambahkan kredensial ke proyek Anda, klik tombol Batal

c. Di bagian atas halaman, pilih tab layar persetujuan OAuth. Pilih alamat Email, masukkan nama Produk jika belum ditetapkan, dan klik tombol Simpan

d. Pilih tab Kredensial, klik tombol Buat kredensial dan pilih ID klien OAuth

e. Pilih jenis aplikasi Lainnya, masukkan nama "Google Sheets API for Selenium", dan klik tombol Create

Cara membaca data dari google spreadsheet menggunakan java

f. Klik OK untuk menutup dialog yang dihasilkan

g. Klik tombol file_download (Unduh JSON) di sebelah kanan ID klien

Cara membaca data dari google spreadsheet menggunakan java

h. Pindahkan file ini ke direktori kerja Anda dan ganti namanya client_secret.json<

Mari kita lihat bagaimana menggunakan API ini untuk membaca data dari Spreadsheet, di sini kita akan menggunakan Maven untuk mendapatkan dependensi untuk Google Spreadsheet API v4

Buat proyek maven sederhana dan tambahkan dependensi di bawah ini untuk bekerja dengan Google Sheets API

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.22.0</version>
</dependency>
<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.22.0</version>
</dependency>
<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-sheets</artifactId>
    <version>v4-rev483-1.22.0</version>
</dependency>

Di bawah ini adalah contoh kode di Java untuk mengakses Google Spreadsheet. Anda juga dapat menambahkan toples berikut sebagai dependensi maven untuk melakukan pengujian menggunakan Selenium dan pengujian

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.10</version>
</dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.4.0</version>
    </dependency> 
_

Pertama buat kelas bernama GoogleSheetAPI. java dan salin kode di bawah ini. -

package spreadsheetAutomation;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;

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.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
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;

public class GoogleSheetAPI {
    /** Application name. */
    private static final String APPLICATION_NAME = "Google Sheets API Java Quickstart";

    /** Directory to store user credentials for this application. */
    private static final java.io.File DATA_STORE_DIR = new java.io.File(
        System.getProperty("user.home"), ".credentials/sheets.googleapis.com-java-quickstart");

    /** Global instance of the {@link FileDataStoreFactory}. */
    private static FileDataStoreFactory DATA_STORE_FACTORY;

    /** Global instance of the JSON factory. */
    private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

    /** Global instance of the HTTP transport. */
    private static HttpTransport HTTP_TRANSPORT;

    /** Global instance of the scopes required by this quickstart.
     *
     * If modifying these scopes, delete your previously saved credentials
     * at ~/.credentials/sheets.googleapis.com-java-quickstart
     */
    private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS_READONLY);

    static {
        try {
            HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
            DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
        } catch (Throwable t) {
            t.printStackTrace();
            System.exit(1);
        }
    }

    /**
     * Creates an authorized Credential object.
     * @return an authorized Credential object.
     * @throws IOException
     */
    public static Credential authorize() throws IOException {
        // Load client secrets.
        InputStream in =
        GoogleSheetAPI.class.getResourceAsStream("/client_secret.json");
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

        // Build flow and trigger user authorization request.
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(DATA_STORE_FACTORY)
                .setAccessType("offline")
                .build();
        Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        System.out.println("Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
        return credential;
    }

    /**
     * Build and return an authorized Sheets API client service.
     * @return an authorized Sheets API client service
     * @throws IOException
     */
    public static Sheets getSheetsService() throws IOException {
        Credential credential = authorize();
        return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
                .setApplicationName(APPLICATION_NAME)
                .build();
    }
    
	public List<List<Object>> getSpreadSheetRecords(String spreadsheetId, String range) throws IOException {
		Sheets service = getSheetsService();		
        ValueRange response = service.spreadsheets().values()
                .get(spreadsheetId, range)
                .execute();
        List<List<Object>> values = response.getValues();
        if (values != null && values.size() != 0) {
        	return values;
        } else {
            System.out.println("No data found.");
            return null;
        }
	}
}

Di kelas di atas, kami telah mendefinisikan metode 'getSpreadSheetRecords(String spreadsheetId, String range)' yang berfungsi mengembalikan data yang diperlukan berdasarkan spreadsheetId dan rentang yang kami tentukan

spreadsheetId. -

Metode membutuhkan parameter spreadsheetId yang digunakan untuk mengidentifikasi spreadsheet mana yang akan diakses atau diubah. ID ini adalah nilai antara "/d/" dan "/edit" di URL spreadsheet Anda

Misalnya, pertimbangkan URL berikut yang mereferensikan spreadsheet Google Sheets

jangkauan. -

Metode membutuhkan rentang dalam notasi A1. Ini adalah string seperti Sheet1!A1:B2, yang mengacu pada sekelompok sel dalam spreadsheet. Anda dapat melihat nama sheet pada tab di dekat bagian bawah layar. Standarnya adalah Lembar 1

Misalnya, rentang yang valid adalah. -
Lembar1. A1. B2 mengacu pada dua sel pertama di dua baris teratas Sheet1

A1. B2 mengacu pada dua sel pertama di dua baris teratas dari lembar pertama yang terlihat

Jika kami menentukan rentang sebagai "A1. B2" direpresentasikan sebagai [['a1', 'b1'], ['a2', 'b2']] (di mana string adalah placeholder untuk konten sebenarnya dari sel-sel tersebut di Sheet1)

CATATAN
Jika nama sheet memiliki spasi atau dimulai dengan tanda kurung, apit nama sheet dengan tanda kutip tunggal ('), mis. g 'Lembar Satu'. A1. B2. Untuk kesederhanaan, aman untuk selalu mengapit nama sheet dengan tanda kutip tunggal

Di bawah ini adalah Data uji yang ada di Google Spreadsheet

Cara membaca data dari google spreadsheet menggunakan java

Sekarang mari kita coba membuat kelas dengan satu skenario untuk mengakses google spreadsheet dan memvalidasi data yang dikembalikan oleh Selenium

package spreadsheetAutomation;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class automationTest {
	
	public WebDriver driver;
	public WebDriverWait wait;
	String appURL = "appURL";

	private String spreadsheetId = "1C6yrt6yr27luKlbclkOYFmTdL8tD5Wfh__dIen0"; 
	private String range = "UserInfo!A3:E";
	String userName = "johns";
	String password = "test@123";
	
	@BeforeClass
	public void testSetup() {
		System.setProperty("webdriver.gecko.driver","path of geckodriver.exe");
		driver=new FirefoxDriver();
		wait = new WebDriverWait(driver, 5);
	}

	//Verify user profile information after login
	@Test
	public void verifyProfileInfo() throws IOException {
		login(userName,password);
		String[] userProfileInfo = getProfileInfo();
		List<String> userData = Arrays.asList(userProfileInfo);
		//Get data from sheet  and verify first profile info of john
		GoogleSheetAPI sheetAPI = new GoogleSheetAPI();
		List<List<Object>> values = sheetAPI.getSpreadSheetRecords(spreadsheetId, range);
		for (List<Object> row : values) {
			if(row.get(0).equals(userName)) {
			Assert.assertEquals(userData, row);
			break;
			}
		}
	}
	
	public String[] getProfileInfo() {
		//Navigate to Profile page 
		driver.findElement(By.id("user-profile")).click();
		String firstName = driver.findElement(By.id("firstname")).getText();
		String lastName = driver.findElement(By.id("lastname")).getText();
		String age = driver.findElement(By.id("user-age")).getText();
		String sex = driver.findElement(By.id("user-sex")).getText();
		String[] arrayUserInfo = {firstName, lastName, age, sex};
		return arrayUserInfo;
	}
	
	public void login(String userName, String password) {
		driver.findElement(By.id("session_key-login")).sendKeys(userName);
		driver.findElement(By.id("session_password-login")).sendKeys(password);
		driver.findElement(By.id("signin")).click();
	}
	
	@AfterClass
	public void tearDown() {
		if(driver!=null) {
		driver.quit();
		}
	}

}

Dalam kode di atas, kami memiliki metode uji tunggal 'verifyProfileInfo()' yang akan memvalidasi informasi profil pengguna nama depan, nama belakang, usia, dan jenis kelamin setelah pengguna masuk

Ada dua metode lain 'login(username,password)' yang membantu untuk login ke aplikasi dan 'getProfileInfo()' akan mendapatkan teks dan mengembalikan array string dengan informasi profil

Ada dua baris kode dalam metode pengujian 'verifyProfileInfo()' yang mendapatkan data spreadsheet untuk kita

GoogleSheetAPI sheetAPI = new GoogleSheetAPI();
List<List<Object>> values = sheetAPI.getSpreadSheetRecords(spreadsheetId, range);
_

'nilai' akan memiliki semua data spreadsheet (baris dan kolom). Kami akan mengulangi setiap baris dan memverifikasi apakah nama pengguna memiliki informasi profil di lembar

Jika nama pengguna ditemukan di lembar, kami akan mencoba membandingkan kedua daftar o data. Di sini daftar yang dikembalikan oleh 'getProfileInfo()' menggunakan selenium dan daftar lainnya adalah baris

Google Spreadsheets memiliki banyak pengaturan yang memungkinkan Anda berinteraksi dengan spreadsheet. Hanya membaca/menulis nilai sel (melalui spreadsheet. pengumpulan nilai) dan Membaca/menulis aspek apa pun dari spreadsheet (melalui koleksi spreadsheet)

  • ‹ Menjalankan Tes Appium di Android Emulator
  • Opsi Chrome untuk menjalankan Tes WebDriver ›

Tutorial Selenium.  

Tutorial Selenium

Tag.  

Unggul

Komentar

Dikirim oleh Sandeep raulo pada Rab, 27/12/2017 - 05. 17

hai,
apakah mungkin menulis kembali ke lembar yang tersedia di Google Sheets?

  • membalas

Dikirim oleh Vikram Singh pada Selasa, 01/02/2018 - 08. 30

Ya, ini mungkin untuk menulis

  • membalas

Dikirim oleh Jacob pada Sabtu, 23/06/2018 - 07. 53

Artikel yang bagus

  • membalas

Dikirim oleh Girish pada Senin, 16/07/2018 - 03. 31

Itu artikel yang bagus. Saya ingin menerapkan tetapi apakah harganya? . Tolong bantu aku. terima kasih

  • membalas

Dikirim oleh harrydev pada Jum, 20/07/2018 - 02. 25

Anda dapat menggunakannya secara gratis

  • membalas

Dikirim oleh Radu Petean pada Kamis, 11/04/2019 - 04. 00

Saya memiliki lembar google dengan 4 lembar. Dimungkinkan untuk mendapatkan semua data dengan 1 panggilan. Saya harus melakukan 1 panggilan untuk mendapatkan lembaran dan setelah itu 1 panggilan untuk setiap lembar untuk mendapatkan data darinya

  • membalas

Dikirim oleh SonalDesai pada Selasa, 18/05/2021 - 09. 35

Saya tidak bisa membaca clinet_secret. file json, itu melempar pointer nol
sama apa alasannya
di mana saya harus menyimpan file json seseorang dapat berkomentar di atas

  • membalas

Tambahkan komentar baru

Namamu

Subjek

Komentar *

Informasi lebih lanjut tentang format teks

CAPTCHA

Pertanyaan ini untuk menguji apakah Anda adalah pengunjung manusia atau bukan dan untuk mencegah pengiriman spam otomatis

Bagaimana cara mendapatkan data dari Google Sheets di Java?

Jika Anda tidak terbiasa dengan autentikasi dan otorisasi untuk Google Workspace API, baca Ringkasan autentikasi dan otorisasi. Buat aplikasi baris perintah Java yang membuat permintaan ke Google Sheets API. .
Siapkan lingkungan Anda
Siapkan sampel
Jalankan sampel

Bagaimana cara membaca data dari Google Sheets?

Dapatkan data dari sheet lain di spreadsheet Anda .
Di komputer Anda, buka dokumen. google. com/spreadsheet/
Buka atau buat sheet
Pilih sel
Ketik = diikuti dengan nama sheet, tanda seru, dan sel yang sedang disalin. Misalnya, =Lembar1. A1 atau ='Lembar nomor dua'. B4

Bagaimana Anda membaca dan menulis ke Google Sheets di Java?

Berinteraksi dengan Google Spreadsheet dari Java .
Ringkasan. .
Ketergantungan Maven. .
Otorisasi. .
Membuat Instance Layanan Spreadsheet. .
Menulis Nilai pada Lembar. .
Membaca Nilai dari Lembar. .
Membuat Spreadsheet Baru. .
Operasi Pembaruan Lainnya

Bagaimana cara menarik data dari Google Sheets API?

Mengekstrak data dari Google Spreadsheet melalui API .
Konfigurasikan Google Cloud Platform dan aktifkan Google Sheets API
Hasilkan dan ambil kunci API
Izinkan sheet Anda dapat diakses melalui kunci API dan ambil parameter Spreadsheet ID dan Range
Buat dan format permintaan API di Query Builder