packagemainimport("context""log""os""strconv""time""google.golang.org/api/option""google.golang.org/api/sheets/v4")funcnewSheetsClient(ctxcontext.Context,credentialsstring)(*sheets.Service,error){varsvc*sheets.Servicevarerrerrorifcredentials==""{// You may need to run the following commands beforehand:
// gcloud auth application-default login --scopes "https://www.googleapis.com/auth/spreadsheets"
svc,err=sheets.NewService(ctx)}else{svc,err=sheets.NewService(ctx,option.WithCredentialsFile(credentials),option.WithScopes(sheets.SpreadsheetsScope))}iferr!=nil{returnnil,err}returnsvc,nil}funcmain(){ctx,cancel:=context.WithTimeout(context.Background(),time.Minute)defercancel()svc,err:=newSheetsClient(ctx,"")iferr!=nil{log.Fatal(err)}spreadsheetID:=os.Args[1]sourceSheetID,err:=strconv.ParseInt(os.Args[2],10,64)iferr!=nil{log.Fatal(err)}newSheetName:=os.Args[3]varinsertSheetIndexint64=1req:=sheets.Request{DuplicateSheet:&sheets.DuplicateSheetRequest{InsertSheetIndex:insertSheetIndex,NewSheetName:newSheetName,SourceSheetId:sourceSheetID,},}_,err=svc.Spreadsheets.BatchUpdate(spreadsheetID,&sheets.BatchUpdateSpreadsheetRequest{Requests:[]*sheets.Request{&req},}).Do()iferr!=nil{log.Fatal(err)}}