To solve this optimization problem, we first need to define the variables, objective function, and constraints based on the given description.

## Step 1: Define the Variables
Let's denote the quantity of manila envelopes as \(x_0\), the amount of red highlighters as \(x_1\), and the total number of paper clips as \(x_2\).

## Step 2: Define the Objective Function
The objective function to minimize is \(9x_0 + 8x_1 + x_2\).

## Step 3: Define the Constraints
1. Sustainability score of manila envelopes: \(9.78x_0\)
2. Sustainability score of red highlighters: \(4.69x_1\)
3. Sustainability score of paper clips: \(12.61x_2\)
4. Total combined sustainability score from manila envelopes and paper clips: \(9.78x_0 + 12.61x_2 \geq 40\)
5. Total combined sustainability score from manila envelopes and red highlighters: \(9.78x_0 + 4.69x_1 \geq 62\)
6. Total combined sustainability score from all items: \(9.78x_0 + 4.69x_1 + 12.61x_2 \geq 62\)
7. Constraint on manila envelopes and red highlighters: \(2x_0 - 7x_1 \geq 0\)
8. \(x_0\) must be an integer.
9. \(x_1\) must be an integer.
10. \(x_2\) must be an integer.

## Step 4: Implement in Gurobi
We will use Gurobi's Python API to model and solve this problem.

```python
import gurobi as gp

# Create a new model
m = gp.Model("optimization_problem")

# Define the variables
x0 = m.addVar(name="manila_envelopes", vtype=gp.GRB.INTEGER)  # Integer
x1 = m.addVar(name="red_highlighters", vtype=gp.GRB.INTEGER)  # Integer
x2 = m.addVar(name="paper_clips", vtype=gp.GRB.INTEGER)  # Integer

# Define the objective function
m.setObjective(9 * x0 + 8 * x1 + x2, gp.GRB.MINIMIZE)

# Define the constraints
m.addConstr(9.78 * x0 + 12.61 * x2 >= 40, name="sustainability_manila_paper")
m.addConstr(9.78 * x0 + 4.69 * x1 >= 62, name="sustainability_manila_highlighter")
m.addConstr(9.78 * x0 + 4.69 * x1 + 12.61 * x2 >= 62, name="sustainability_total")
m.addConstr(2 * x0 - 7 * x1 >= 0, name="manila_highlighter_constraint")

# Set the sustainability score upper bound (not directly mentioned as a constraint but as an attribute)
# This is not a constraint but an attribute, so we don't add it directly to the model

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Objective: ", m.objVal)
    print("Manila Envelopes: ", x0.varValue)
    print("Red Highlighters: ", x1.varValue)
    print("Paper Clips: ", x2.varValue)
else:
    print("The model is infeasible")
```