4
votes

I use Google Sheet API v4 and I would like to insert new row in my sheet. I tried https://developers.google.com/sheets/api/guides/values#appending_values but that way just insert the data and I want to add the data to specific column like here: Is there a way to add a row on a Google Spreadsheet without OAuth using java? this is an example how to do that using api v3

    row.getCustomElements().setValueLocal("id", "21");
    row.getCustomElements().setValueLocal("type", si.getType().toString());
    row.getCustomElements().setValueLocal("longitude", String.valueOf(si.getLongitude()));
    row.getCustomElements().setValueLocal("latitude", String.valueOf(si.getLatitude()));
    row.getCustomElements().setValueLocal("last_maint", String.valueOf(si.getLast()));
    row.getCustomElements().setValueLocal("inst_date", String.valueOf(si.getInst()));

    row = service.insert(listFeedUrl, row);

How can I do the same using api v4.

2

2 Answers

3
votes

Follow this Quick Start to setup your android project to use Google Spreadsheet API v4 https://developers.google.com/sheets/api/quickstart/android

After the setup you read to use the API.

Code to insert a new row

In the MainActivity, in private class MakeRequestTask extends AsyncTask<Void, Void, List<String>> add insertDataToApi() funtion

        private boolean insertDataToApi() throws IOException{
        String spreadsheetId = "your_spreadsheet_id";
        String range = "MySheet!A1:C"; // A1:C refers to the 1st column of "MySheet", similarlly B1:B 2nd column. For more understanding https://developers.google.com/sheets/api/guides/concepts

        List<Object> row1 = new ArrayList<>();
        row1.add("Name");
        row1.add("Rollno");
        row1.add("Class");
        // similarly create more rows with data

        List<List<Object>> vaules = new ArrayList<>();
        vaules.add(row1);

        ValueRange valueRange = new ValueRange();
        valueRange.setMajorDimension("ROWS");
        valueRange.setValues(vaules);

        UpdateValuesResponse response = this.mService.spreadsheets().values()
                .update(spreadsheetId, range, valueRange)
                .setValueInputOption("RAW")
                .execute();

        Log.e("Update_response", response.toString());

        return true;
    }

Now just call insertDataToApi() in the protected List<String> doInBackground(Void... params){}

0
votes

Add row to google sheet, work in C#, Google.Api.Sheet v4

public void SaveAccount(String userName, String password) {

        GetCredential();

        // Create Google Sheets API service.
        var service = new SheetsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });

        // Define one row
        List<IList<Object>> values = new List<IList<object>>();

        IList<Object> obj = new List<Object>();
        obj.Add(userName);
        obj.Add(password);

        values.Add(obj);

        // Add Batch 
        SpreadsheetsResource.ValuesResource.AppendRequest request =
           service.Spreadsheets.Values.Append(new ValueRange() { Values = values }, idHBusAccount, rangeHBusAccount);
        request.InsertDataOption = SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum.INSERTROWS;
        request.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED;
        var response = request.Execute();

        // Console.WriteLine(response.ToString());

    }