Hello Everyone, Previously I have posted about reading data from Google spreadsheets and got lots of comments regarding writing data to google sheet. So in this post, I am describing how to write data to a google spreadsheet.
Here I am using a Google service account and auth key for authentication purposes. Here I'll show you how to obtain a key from google console.
- Go to Google Cloud Platform and log in using your google account
 - Create a new project on the console
 
- Enable google sheets API for this project
 
- Click on the project -- APIs & Services -- Credentials and click on Create credentials button
 
- Select key type p12 and put account name
 
- After this step, p12 key is downloaded to your system
 
Now see the java code that inserts a new record in the existing google sheet, Here I am using the same Google sheet that I have used in the previous post.
https://docs.google.com/spreadsheets/d/1G3VABou70MUbRzY4vHgiDME5JW5rfo7lrAr_hZyEawU is the URL of the spreadsheet and it looks like this
- package spreadsheetdemo;
 - import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
 - import com.google.api.client.http.HttpTransport;
 - import com.google.api.client.http.javanet.NetHttpTransport;
 - import com.google.api.client.json.jackson.JacksonFactory;
 - import com.google.gdata.client.spreadsheet.SpreadsheetService;
 - import com.google.gdata.data.spreadsheet.ListEntry;
 - import com.google.gdata.data.spreadsheet.SpreadsheetEntry;
 - import com.google.gdata.data.spreadsheet.SpreadsheetFeed;
 - import com.google.gdata.data.spreadsheet.WorksheetEntry;
 - import com.google.gdata.data.spreadsheet.WorksheetFeed;
 - import com.google.gdata.util.AuthenticationException;
 - import com.google.gdata.util.ServiceException;
 - import java.io.File;
 - import java.io.IOException;
 - import java.net.MalformedURLException;
 - import java.net.URL;
 - import java.security.GeneralSecurityException;
 - import java.util.Arrays;
 - import java.util.List;
 - public class MySpreadsheetIntegration {
 - public static void main(String[] args) throws AuthenticationException, MalformedURLException, IOException,
 - ServiceException, GeneralSecurityException {
 - SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1");
 - // Put the path of p12 file that is downloaded from Google Console
 - File p12 = new File("D:/API Project-f35e9ad5ad07.p12");
 - HttpTransport httpTransport = new NetHttpTransport();
 - JacksonFactory jsonFactory = new JacksonFactory();
 - String[] SCOPESArray = {
 - "https://spreadsheets.google.com/feeds", "https://spreadsheets.google.com/feeds/spreadsheets/private/full",
 - "https://docs.google.com/feeds"
 - };
 - final List SCOPES = Arrays.asList(SCOPESArray);
 - //Put your google service account id
 - GoogleCredential credential =
 - new GoogleCredential.Builder().setTransport(httpTransport).setJsonFactory(jsonFactory).setServiceAccountId("xxxxxxx.iam.gserviceaccount.com").setServiceAccountScopes(SCOPES).setServiceAccountPrivateKeyFromP12File(p12).build();
 - service.setOAuth2Credentials(credential);
 - // Define the URL to request. This should never change.
 - URL SPREADSHEET_FEED_URL =
 - new URL("https://spreadsheets.google.com/feeds/worksheets/1G3VABou70MUbRzY4vHgiDME5JW5rfo7lrAr_hZyEawU/private/full");
 - // Make a request to the API and get all spreadsheets.
 - SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class);
 - List<SpreadsheetEntry> spreadsheets = feed.getEntries();
 - System.out.println("Total Sheets- " + spreadsheets.size());
 - if (spreadsheets.size() == 0) {
 - }
 - SpreadsheetEntry spreadsheet = spreadsheets.get(0);
 - System.out.println(spreadsheet.getTitle().getPlainText());
 - // Get the first worksheet of the first spreadsheet.
 - WorksheetFeed worksheetFeed = service.getFeed(spreadsheet.getWorksheetFeedUrl(), WorksheetFeed.class);
 - List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
 - WorksheetEntry worksheet = worksheets.get(0);
 - System.out.println(worksheet.getTitle().getPlainText());
 - // Create a local representation of the new row.
 - ListEntry row = new ListEntry();
 - row.getCustomElements().setValueLocal("Cell1", "Testing");
 - row.getCustomElements().setValueLocal("Cell2", "New Data");
 - // Send the new row to the API for insertion.
 - row = service.insert(spreadsheet.getWorksheetFeedUrl(), row);
 - }
 - }
 
After running this code see the new row is inserted in Google Sheet
You can download the required jars from this link
Cheers  Happy Learning