首页 > 解决方案 > 更新pygsheet bot电报中的某个单元格-python

问题描述

我是 python 的新手,但我的工作迫使我使用 python。我创建了具有将用户输入存储在谷歌表(pygsheet)中并根据用户输入更新某个单元格的功能的机器人电报(在我的情况下更新维护状态)。流程是:用户输入维修号->在一些文件中搜索->找到正确的文件后,在单元格中搜索->显示维修号及其旧状态->用户更新状态->新状态存储在单元格中。

我正在努力寻找代码参考,希望有人可以帮助我,谢谢:") 至少给我示例代码更新单元格中的值。顺便说一句,我正在使用pygsheet 和 pandas

这是我在谷歌表中存储用户输入的代码(维护号是 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

谷歌驱动器中的一些工作表文件存储用户输入的位置 谷歌驱动器中的一些工作表文件存储用户输入的位置

需要由用户输入更新的“状态”单元格 需要由用户输入更新的“状态”单元格

标签: pythonpandasbotstelegrampygsheets

解决方案


推荐阅读