func defAuthContainer(c *cli.Context) *AuthContainer {
	var err error
	a := &AuthContainer{
		&InitVal{},
		&ResMsg{},
		&GgsrunCfg{},
		&Param{},
		&Cs{},
		&Atoken{},
		&ChkAt{},
	}
	a.InitVal.pstart = time.Now()
	a.InitVal.workdir, err = filepath.Abs(".")
	if err != nil {
		panic(err)
	}
	if c.Command.Names()[0] == "auth" {
		a.InitVal.cfgdir = a.InitVal.workdir
	} else {
		a.InitVal.cfgdir = os.Getenv(cfgpathenv)
		if a.InitVal.cfgdir == "" {
			a.InitVal.cfgdir = a.InitVal.workdir
		}
	}
	a.Param.Function = c.String("function")
	a.InitVal.log = c.Bool("log")
	a.InitVal.Port = defPort
	if c.Command.Names()[0] == "auth" {
		if c.Int("port") != 0 {
			a.InitVal.Port = c.Int("port")
		}
	}
	a.GgsrunCfg.Scopes = []string{
		"https://www.googleapis.com/auth/drive",
		"https://www.googleapis.com/auth/drive.file",
		"https://www.googleapis.com/auth/drive.scripts",
		"https://www.googleapis.com/auth/script.external_request",
		"https://www.googleapis.com/auth/script.scriptapp",
		"https://www.googleapis.com/auth/spreadsheets",
		"https://www.googleapis.com/auth/script.projects",
	}
	a.useServiceAccount = c.String("serviceaccount")
	return a
}
DefAuthContainer : Struct container for authorization
package main
import (
	"math"
	"os"
	"path/filepath"
	"regexp"
	"strings"
	"time"
	"github.com/tanaikech/ggsrun/utl"
	"github.com/urfave/cli"
)
const (
	appname  = "ggsrun"
	serverid = "115-19njNHlbT-NI0hMPDnVO1sdrw2tJKCAJgOTIAPbi_jq3tOo4lVRov"
	eapir1 = "Execution API without server"
	eapir2 = "Execution API with server"
	wapps  = "Web Apps with server"
	clientsecretFile = "client_secret.json"
	cfgFile          = "ggsrun.cfg"
	cfgpathenv       = "GGSRUN_CFG_PATH"
	deffuncserv    = "ggsrunif.ExecutionApi"
	deffuncwith    = "main"
	deffuncwithout = "main"
	defprojectname = appname
	defPort        = 8080
	oauthurl      = "https://accounts.google.com/o/oauth2/"
	sdownloadurl  = "https://script.google.com/feeds/download/export?id="
	executionurl  = "https://script.googleapis.com/v1/scripts/"
	driveapiurl   = "https://www.googleapis.com/drive/v3/files/"
	chkatutl      = "https://www.googleapis.com/oauth2/v3/"
	uploadurl     = "https://www.googleapis.com/upload/drive/v3/files/"
	appsscriptapi = "https://script.googleapis.com/v1/projects"
)
type InitVal struct {
	pstart            time.Time
	workdir           string
	cfgdir            string
	usedDir           string  
	update            bool
	log               bool
	Port              int
	useServiceAccount string
}
type ResMsg struct {
	Msg []string
}
type GgsrunCfg struct {
	Scriptid     string   `json:"script_id"`
	Clientid     string   `json:"client_id"`
	Clientsecret string   `json:"client_secret"`
	Refreshtoken string   `json:"refresh_token"`
	Accesstoken  string   `json:"access_token,omitempty"`
	Expiresin    int64    `json:"expires_in,omitempty"`
	Scopes       []string `json:"scopes"`
}
type Cinstalled struct {
	ClientID                string   `json:"client_id"`
	Projectid               string   `json:"project_id"`
	Authuri                 string   `json:"auth_uri"`
	Tokenuri                string   `json:"token_uri"`
	Authproviderx509certurl string   `json:"auth_provider_x509_cert_url"`
	Clientsecret            string   `json:"client_secret"`
	Redirecturis            []string `json:"redirect_uris"`
}
type Cs struct {
	Cid Cinstalled `json:"installed,omitempty"`
	Ciw Cinstalled `json:"web,omitempty"`
}
type Atoken struct {
	Accesstoken  string `json:"access_token"`
	Refreshtoken string `json:"refresh_token"`
	Expiresin    int64  `json:"expires_in"`
}
type ChkAt struct {
	Azu        string `json:"azu,omitempty"`
	Aud        string `json:"aud,omitempty"`
	Scope      string `json:"scope,omitempty"`
	Exp        string `json:"exp,omitempty"`
	Expiresin  string `json:"expires_in,omitempty"`
	Accesstype string `json:"access_type,omitempty"`
	Error      string `json:"error_description,omitempty"`
}
type Param struct {
	Function   string   `json:"function"`
	Parameters []string `json:"parameters,omitempty"`
	DevMode    bool     `json:"devMode"`
}
type e1para struct {
	Function   string        `json:"function"`
	Parameters []interface{} `json:"parameters,omitempty"`
	DevMode    bool          `json:"devMode"`
}
type Com struct {
	Com     string `json:"com,omitempty"`
	Exefunc string `json:"exefunc,omitempty"`
	Log     bool   `json:"log"`
}
type Project struct {
	ScriptId string `json:"scriptId,omitempty"`
	Files    []File `json:"files"`
}
type File struct {
	ID             string          `json:"id,omitempty"`
	Name           string          `json:"name"`
	Type           string          `json:"type"`
	Source         string          `json:"source"`
	CreateTime     string          `json:"createTime,omitempty"`
	UpdateTime     string          `json:"updateTime,omitempty"`
	Creator        *creator        `json:"creator,omitempty"`
	LastModifyUser *lastmodifyuser `json:"lastModifyUser,omitempty"`
}
type creator struct {
	Email string `json:"email,omitempty"`
	Name  string `json:"name,omitempty"`
}
type lastmodifyuser struct {
	Email string `json:"email,omitempty"`
	Name  string `json:"name,omitempty"`
}
type FeedBackData struct {
	Name     string `json:"name"`
	Done     bool   `json:"done"`
	Response struct {
		Type   string   `json:"@type"`
		Result Resvalue `json:"result"`
	} `json:"response"`
	Error struct {
		Code     int        `json:"code,omitempty"`
		Message  string     `json:"message,omitempty"`
		Status   string     `json:"status,omitempty"`
		Detailes []ErrorMsg `json:"details,omitempty"`
	} `json:"error"`
}
type ErrorMsg struct {
	Type                     string `json:"@type,omitempty"`
	ErrorMessage             string `json:"errorMessage,omitempty"`
	ErrorType                string `json:"errorType,omitempty"`
	ScriptStackTraceElements []struct {
		Function   string `json:"function,omitempty"`
		LineNumber int    `json:"lineNumber,omitempty"`
	} `json:"scriptStackTraceElements,omitempty"`
}
type Resvalue struct {
	Result   interface{}   `json:"result"`
	Logger   []interface{} `json:"logger,omitempty"`
	GoogleEt float64       `json:"GoogleElapsedTime,omitempty"`
	TotalEt  float64       `json:"TotalElapsedTime,omitempty"`
	Date     string        `json:"ScriptDate,omitempty"`
	Uapi     string        `json:"API,omitempty"`
	Message  []string      `json:"message,omitempty"`
}
type DlFileByScript struct {
	Fileid    string `json:"-"`
	Extension string `json:"-"`
}
type ProjectUpdaterMeta struct {
	MimeType string `json:"mimeType"`
}
type updateProjectFiles struct {
	UpFiles []string
}
type ByteSliceFile struct {
	FileData []int  `json:"result"`
	Name     string `json:"name"`
	MimeType string `json:"mimeType"`
}
type serverInfToGetCode struct {
	Response chan authCode
	Start    chan bool
	End      chan bool
}
type authCode struct {
	Code string
	Err  error
}
type AuthContainer struct {
	*InitVal    
	*ResMsg     
	*GgsrunCfg  
	*Param      
	*Cs         
	*Atoken     
	*ChkAt      
}
type ExecutionContainer struct {
	*InitVal             
	*ResMsg              
	*GgsrunCfg           
	*Param               
	*FeedBackData        
	*Project             
	*DlFileByScript      
	*updateProjectFiles  
}