Cara memformat tanggal dalam Google Apps Script ini

10

Saya telah menemukan skrip pemeriksaan peringkat ini. Saya tidak yakin persis di mana saya menemukannya tetapi ini dibangun di Google Documents dan skrip yang mengotomatiskan proses pemeringkatan peringkat. Saya mengerti sedikit pengkodean tetapi tidak cukup untuk benar-benar mengetahui hal ini. Saya yakin seseorang di sini bisa mengetahuinya.

Script berjalan setiap malam, menanyakan Google untuk kata kunci saya dan kemudian mengisi sel kosong di Google Spreadsheet. Format tanggal yang muncul adalah15.06.2014 06:08:21

Saya ingin ini menjadi format tanggal yang lebih saya kenal, seperti mm/dd/yyyyatau sesuatu seperti itu.

Bagaimanapun, saya sudah bereksperimen dengan script (bahasa apa ini ditulis dalam? Python?) Dan saya melihatnya menetapkan variabel bernama curDatuntuk new Date(). Dari pemahaman saya, Date()apakah fungsi yang dipanggil dan tidak ada parameter yang diteruskan ke sana - benar? Apakah masalah dalam Date()fungsi atau ini hanya kasus sederhana saya harus memformat tanggal di Google Spreadsheets?

Berikut ini tempel seluruh skrip - singkat:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.insertColumnBefore(5);
  var column = sheet.getRange('B13:B');
  var values = column.getValues();
  var rankingdrop = sheet.getRange("c8").getValue();
  var ct = 0;
  var colors = [];
  while ( values[ct][0] != "" ) {
  var formu = sheet.getRange("d" + (ct+13)).getFormula();
    sheet.getRange("d" + (ct+13)).setFormula(formu);
    Utilities.sleep(3000);
  var rank = sheet.getRange("d" + (ct+13)).getValue();
  sheet.getRange("e" + (ct+13)).setValue(rank);
  var oldrank = sheet.getRange("f" + (ct+13)).getValue();
  var colorcell = sheet.getRange("e" + (ct+13));
    if(rank > oldrank){
    colorcell.setFontColor("#ff0000");
  } else if (rank < oldrank){
    colorcell.setFontColor("#088A08");
  }
    if (rank - oldrank >= rankingdrop) {
      var mailalert = true;
    }
    ct++;
  }
  var sendmail = sheet.getRange("c7").getValue();
  if (mailalert == true && sendmail == "yes")  {
    var emailAddress = sheet.getRange("c9").getValue();
    var message = "Ranking alert. Please check your rankings";
    var url = sheet.getRange("c4").getValue();
    var subject = ("Ranking Alert for " + url);
    MailApp.sendEmail(emailAddress, subject, message);
  }
  var curDat = new Date();
  var startOTY = curDat.getFullYear();
  var curValue = Date.parse(curDat);
  var begDat = new Date(startOTY,0,1);
  var begValue = Date.parse(begDat);
  var weekNum = parseInt((curValue - begValue)/604800000)+1;
  sheet.getRange("e12").setValue(curDat);
}
pengguna72299
sumber
"(bahasa apa ini ditulis? python?)" Ini adalah JavaScript, lihat developers.google.com/apps-script
Vidar S. Ramdal

Jawaban:

9

Gunakan setNumberFormatuntuk mengatur format tanggal (atau angka) untuk sel tertentu. Contoh ini menempatkan tanggal hari ini di A1 lembar ini, diformat sebagai MM / hh / tttt:

var cell = SpreadsheetApp.getActiveSheet().getRange(1, 1);
cell.setValue(new Date()).setNumberFormat("MM/dd/yyyy");

Alasan menggunakan setNumberFormat(dan tidak Utilities.formatDate, seolah-olah sering disarankan di Internet):

  1. Utilities.formatDatetidak mengubah format sel; itu mengubah isinya menjadi teks. Jika Anda akan menggunakan nilai tanggal dalam perhitungan, Anda tidak ingin itu dikonversi ke teks.
  2. Utilities.formatDatemembutuhkan satu untuk menentukan zona waktu. Jika Anda memasukkan sesuatu seperti "GMT + 1" dan negara Anda mengamati Waktu Penghematan Siang Hari, Anda dapat mengharapkan bug yang sulit dilacak muncul beberapa bulan kemudian. Dengan setNumberFormat, nilai tanggal tetap konsisten dengan semua nilai tanggal lainnya dalam spreadsheet, diatur oleh pengaturan zona waktu.

sumber
Catatan untuk 2 .: Anda dapat menggunakan Session.getScriptTimeZone()sebagai parameter zona waktu.
Kos
Masalahnya adalah bahwa Session.getScriptTimeZone()output format panjang (mis. Amerika / Denver) daripada "GMT-7" sehingga Anda harus mengubahnya entah bagaimana.
Craig.Pearce
@ Craig. Kanan Kanan, dan apakah "Amerika / Denver" dikonversi ke GMT-7 atau GMT-6 tergantung pada apakah waktu Penghematan Siang Hari berlaku, yang tergantung pada keadaan Anda saat ini, dan hukum apa yang disahkan di negara bagian itu baru saja.
0

Bersama waktu:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
Dawid Polakowski
sumber