Smoothly transform gameobject to specific coordinates with the click of a GUI

I looked around the internet for a way to do this. I found a lot of things very similar but not quite what i want it to be. I want to make a target have 3 distances, close middle and far. And I have the GUI set up and the variables set up
#pragma strict
var Target : GameObject;
var Speed = 20;

function OnGUI () {
if (GUI.Button(Rect(30,40,180,40), “Put the target in the front”)) {

if (GUI.Button(Rect(30,90,180,40),"Put the target in the middle" )){
if (GUI.Button(Rect(30,140,180,40),"Put the target in the back" )){

I just got to get something to put in the gui click functions which makes the object smoothly go to specific coordinates, with the click of a button, and i want it so if the same button is clicked more than once than it won’t do anything.

Something like this might work for you:

var targetPos : Vector3;
//You will set targetPos with button click.

function Update(){
    Target.transform.position = Vector3.Lerp(Target.transform.position,targetPos,Time.deltaTime * Speed);

Change Speed to suit your needs.