1

i am a new beginner in python, but my job forced me to use python. i created bot telegram that has function to store user's input in google sheet (pygsheet) and update a certain cell according to user's input (in my case update status of maintenance). the flow is : user enter the maintenance number -> it will search in some files -> after the right file is found, it will search in the cell -> displaying the maintenance number with its old status -> user update the status -> new status is stored in cell.

i'm struggling in finding code reference, hope someone could help me thank you :") at least give me the the example code to update a value in cell. btw im using pygsheet and pandas.

here's my code to store user input in google sheet (maintenance number is nomor tiket):

# 1. Input Gamas
# user input in bot telegram
def inputgamas(bot,update): 

    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO :' ,reply_markup=markup )
    return NOMOR_TIKET


def induk_Gamas(bot, update, user_data):
    user_data['Nama STO'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :')
    return JUMLAH_IMPACT

def jumlah_Impact(bot, update, user_data):
    user_data['Nomor Tiket Induk'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ')
    return JENIS_PERANGKAT

def jenis_Perangkat(bot, update, user_data):
    user_data['Jumlah Impact'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' )
    return NAMA_PERANGKAT

def nama_Perangkat(bot, update, user_data):
    user_data['Jenis Perangkat'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ')
    return JENIS_GANGGUAN

def jenis_Gangguan (bot, update, user_data):
    user_data['Nama Perangkat'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : ' )
    return SEBAB_GAMAS

def sebab_Gamas (bot, update, user_data):
    user_data['Jenis Gangguan'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : '  + str(user_data['Jenis Gangguan']) +  
                              '\n 7. Sebab Gamas : ' )
    return DESCRIPTION

def description (bot, update, user_data):
    user_data['Sebab Gamas'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : '  + str(user_data['Jenis Gangguan']) +  
                              '\n 7. Sebab Gamas : ' + str(user_data['Sebab Gamas']) + 
                              '\n 8. Description : ')   
    return TANGGAL_OPEN

def tanggal_OpenTicket (bot,update, user_data):
    user_data['Description'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : '  + str(user_data['Jenis Gangguan']) +  
                              '\n 7. Sebab Gamas : ' + str(user_data['Sebab Gamas']) + 
                              '\n 8. Description : ' + str(user_data['Description']) + 
                              '\n 9. Tanggal Open Ticket : ' )  
    return STATUS

def status (bot,update, user_data):
    user_data['Tanggal Open Ticket'] = update.message.text
    print(user_data)
    update.message.reply_text('Silahkan Mengisi : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : '  + str(user_data['Jenis Gangguan']) +  
                              '\n 7. Sebab Gamas : ' + str(user_data['Sebab Gamas']) + 
                              '\n 8. Description : ' + str(user_data['Description']) + 
                              '\n 9. Tanggal Open Ticket : ' + str(user_data['Tanggal Open Ticket']) + 
                              '\n 10.Status : ')    
    return END2




#user input is stored in google sheet according to the STO name

def end2(bot, update, user_data):
    user_data['Status'] = update.message.text
    user_data['Timestamps'] = str(datetime.datetime.now())

    final_data = pd.Series(user_data)
    final_data = pd.DataFrame(final_data).transpose()

    print(final_data)

    gc = pygsheets.authorize(service_file='creds.json')

    date = datetime.datetime.today().strftime('%Y-%m-%d')

    try:
        sheet = gc.open('GAMAS_' + user_data['Nama STO'])
    except:
        gc.create('GAMAS_' + user_data['Nama STO'],folder='1IaX6Q0JGIsdBAwTaAoestL1nXuXx93rP') #bikin beda folder
        sheet = gc.open('GAMAS_' + user_data['Nama STO'])

    worksheet = sheet[0]
    values = worksheet.get_all_records()
    current_data = pd.DataFrame(values)
    frames = [current_data, final_data]
    result = pd.concat(frames)
    result = result[['Timestamps','Nama STO','Nomor Tiket Induk','Jumlah Impact','Jenis Perangkat','Nama Perangkat','Jenis Gangguan','Sebab Gamas','Description','Tanggal Open Ticket', 'Status']]

    worksheet.set_dataframe(result,(1,1))

    update.message.reply_text('Berikut ini yang telah anda isikan : ' +
                              '\n 1. Pilih Nama STO : '  + str(user_data['Nama STO']) +
                              '\n 2. Nomor Tiket Induk :' + str(user_data['Nomor Tiket Induk']) + 
                              '\n 3. Jumlah Impact : ' + str(user_data['Jumlah Impact']) + 
                              '\n 4. Jenis Perangkat : ' + str(user_data['Jenis Perangkat']) +  
                              '\n 5. Nama Perangkat : ' + str(user_data['Nama Perangkat']) +  
                              '\n 6. Jenis Gangguan : '  + str(user_data['Jenis Gangguan']) +  
                              '\n 7. Sebab Gamas : ' + str(user_data['Sebab Gamas']) + 
                              '\n 8. Description : ' + str(user_data['Description']) + 
                              '\n 9. Tanggal Open Ticket : ' + str(user_data['Tanggal Open Ticket']) + 
                              '\n 10.Status : ' + str(user_data['Status']) +
                              '\n \n \n Terimakasih! Pengisian Selesai :) ')    

    update.message.reply_text (
        "\n- /inputgamas untuk melanjutkan memasukkan nomot tiket induk Gamas"
        "\n- /updategamas untuk mengupdate status penanganan Gamas"
        "\n- /cekgamas untuk melihat status penanganan Gamas"
        "\n- /menu untuk kembali ke menu awal" )

    user_data.clear()
    return ConversationHandler.END

some sheet files in google drive where to store user input some sheet files in google drive where to store user input

'status' cell that need to be updated by user input 'status' cell that need to be updated by user input

enamoria
  • 896
  • 2
  • 11
  • 29
moji
  • 11
  • 2

0 Answers0