public void SetValuesForCellsAt <T>(TableIndex index, List <List <T> > values) { var body = new ValueRange { Values = values.Select(v => v.Cast <object>().ToList()) .Cast <IList <object> >() .ToList(), MajorDimension = Direction.Horizontal.ToGoogleDimension() }; var range = new TableIndexRange(index, index .WithRow(index.Row + values.Count - 1) .WithColumn(index.Column + values.Select(v => v.Count).Max() - 1)); UpdateRequest request = SheetsService.Spreadsheets.Values.Update(body, SpreadsheetId, range.ToString()); request.ValueInputOption = USERENTERED; request.Execute(); }