Saya sedang menguji/mempelajari webhook. Cara mengirim, menerimanya. Jadi saya pikir saya akan menggunakan GAS.

Saya memiliki skrip sederhana ini dan saya bertanya-tanya mengapa Logger tidak berfungsi. Di Projects/Executions saya dapat melihat bahwa skrip doPost dieksekusi tetapi tidak ada log. Email telah dikirim dan skrip mengembalikan nilainya.

  • menggunakan Editor Legacy yang lama (tidak tahu cara mendapatkan yang baru)
  • di Menu-Resources-Cloud Platform Project dikatakan "Script ini memiliki proyek Cloud Platform yang dikelola Apps Script."
  • ketika saya membuka proyek di editor saya mendapatkan pesan ini "Proyek ini berjalan pada runtime Apps Script baru kami yang didukung oleh Chrome V8."
  • pengecualian logging disetel ke "exceptionLogging": "STACKDRIVER" disetel ke default

Saya mencoba console.log(e); tetapi tidak berhasil untuk saya.

function doPost(e) {
  
 Logger.log("I was called")
 if(typeof e !== 'undefined'){

    Logger.log(e.parameter);
    Logger.log("I was called 2")
 
    MailApp.sendEmail({
     to: "radek@gmail.com",
     subject: "Call Sucessful",
     htmlBody: "I am your <br>" +
               JSON.stringify(e)+ "<br><br>" +
               JSON.stringify(e.parameters)
      
    });
    
  }  
  return ContentService.createTextOutput(JSON.stringify(e))
}

Pertanyaan1: Dapatkah saya membuat Logger berfungsi?

Pertanyaan2: Saya ingin melihat data yang diterima di Debugger, apakah itu mungkin?

Pertanyaan3: Apakah ada cara GAS mendorong data yang diterimanya ke browser web saya. Tentu saja browser TIDAK mengirim data.

Pertanyaan4: Tidak ada hubungannya dengan topik tetapi ... Apakah Anda tahu apa yang harus saya lakukan agar dapat menggunakan Editor baru?

1
Radek 5 Januari 2021, 12:11

2 jawaban

Seperti yang ditentukan banyak orang, Anda dapat menggunakan console.log untuk ini.

Namun, saya juga bekerja dengan webhook dari waktu ke waktu. Dan saya merasa jauh lebih nyaman untuk men-debug langsung ke spreadsheet google, menggunakan kode seperti ini

function doPost(e) {
  log('# doPost', JSON.stringify(e));
  try {
    // Some webhook-processing logic here
    if(e.parameter.action == 'test-error') {
      item.something = nothing;
    }
    if(e.parameter.action == 'test-log') {
      log('# custom log', 'Some data');
    }
  } catch(error) {
    log('# error', JSON.stringify([error, error.stack]));
  }
}

function log(event, message){
  SpreadsheetApp.getActive().getSheetByName('Log').appendRow([new Date(), event, message])
}

Contoh lembar kerja: https://docs.google.com/spreadsheets/d/ 144i9pxDIB_C8ZRZ-6vd9DiPIw8Rt85hTtVoqk7dtHQg/edit?usp=sharing

Anda dapat memicu logging dengan sesuatu seperti ini

curl -X POST https://script.google.com/macros/s/AKfycby3EoaQ8DOt8H_Mc4vjH6JZkhsaAwYHk_sa9HE5Be3qVo0Ym0b2/exec?action=test-error

Atau

curl -X POST https://script.google.com/macros/s/AKfycby3EoaQ8DOt8H_Mc4vjH6JZkhsaAwYHk_sa9HE5Be3qVo0Ym0b2/exec?action=test-log

Anda dapat menggunakan log yang sama untuk logging kustom Anda dari beberapa variabel perantara selama resolusi webhook.

Alasan saya lebih suka ini daripada logging stackdriver standar adalah karena lembar google lebih eksplisit dan lebih mudah dikelola.

2
roma 10 Januari 2021, 10:37

Anda dapat menggunakan console.log() untuk melihat hal-hal dalam "Eksekusi Saya".

1
CB Hoffman 5 Januari 2021, 11:39