```python
def cell_name(row: int, column: int) -> str:
    """Converts a 2D grid coordinate to a spreadsheet name."""
    if row < 0 or column < 0:
        raise ValueError("Row and column must be non-negative integers.")
    
    letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    num = column
    
    while num >= 26:
        remainder = num % 26
        cell_name += letters[remainder]
        num //= 26
    
    if num > 0:
        cell_name += letters[num - 1]
    
    return f"{letters[row]}{cell_name}"

def grid_cells(rows: int, columns: int) -> list:
    """Returns the names of every cell in a grid of given size."""
    if rows < 0 or columns < 0:
        raise ValueError("Rows and columns must be non-negative integers.")
    
    result = []
    for row in range(rows):
        for column in range(columns):
            result.append(cell_name(row, column))
    
    return result
```