Обновление определенной ячейки в pygsheet bot telegram - python - PullRequest
0 голосов
/ 21 декабря 2018

Я новичок в Python, но моя работа заставила меня использовать Python.я создал бот-телеграмму, в которой есть функция для хранения ввода пользователя в google sheet (pygsheet) и обновления определенной ячейки в соответствии с вводом пользователя (в моем случае обновление статуса обслуживания).поток: пользователь вводит номер обслуживания -> он будет искать в некоторых файлах -> после того, как будет найден нужный файл, он будет искать в ячейке -> отображать номер обслуживания со старым статусом -> пользователь обновитstatus -> новый статус сохраняется в ячейке.

Я изо всех сил пытаюсь найти ссылку на код, надеюсь, кто-то может мне помочь, спасибо: ") по крайней мере, дайте мне пример кода *От 1006 * до обновить значение в ячейке . Кстати, используя pygsheet и pandas .

вот мой код для хранения пользовательского ввода в google sheet (номер техобслуживания - 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

некоторые файлы листов на диске Google, в которых хранится введенная пользователем some sheet files in google drive where to store user input

ячейка 'status', которая должнаобновляться пользовательским вводом 'status' cell that need to be updated by user input

...