Instantiate object only once

I’m stumped on how I’m meant to get this Cube object to spawn only the once. This is the code I’m using which is currently spawning them indefinitely:

	private GameObject Cube;
	public float cubeSpeed;
	private bool cubesSpawned;
void Start () {
		cubesSpawned = false;
	}
	
	void Update () {
		Cube = GameObject.Find ("Cube");
if (!cubesSpawned) {
			cubesSpawned = true;
			Instantiate (Cube, new Vector3 (transform.position.x, Random.Range (topRight.y, bottomRight)), Quaternion.identity); 
		}

		GetComponent<Rigidbody> ().velocity = new Vector2 (cubeSpeed, 0f);
	}

I have a feeling that each instance of the GameObject you’re spawning has this script attached to it? If so, each newly spawned cube will spawn one more cube because of the script attached to it.

Put this script on a GameObject other than your cube, and it should work as intended.