Cách định dạng ngày trong Tập lệnh Google Apps này


8

Tôi đã đi qua kịch bản kiểm tra thứ hạng này. Tôi không chắc chắn chính xác nơi tôi tìm thấy nhưng nó được xây dựng trên Google Docs và một tập lệnh tự động hóa quá trình kiểm tra thứ hạng. Tôi hiểu một chút về mã hóa nhưng không đủ để thực sự tìm ra điều này. Tôi chắc chắn ai đó ở đây có thể tìm ra nó.

Tập lệnh chạy hàng đêm, truy vấn Google cho các từ khóa của tôi và sau đó điền vào các ô trống trong Bảng tính Google. Định dạng ngày xuất hiện là15.06.2014 06:08:21

Tôi muốn nó là một định dạng ngày mà tôi quen thuộc hơn, chẳng hạn như mm/dd/yyyyhoặc một cái gì đó tương tự.

Nhưng dù sao, tôi đã dabbled với kịch bản (ngôn ngữ được viết bằng này? Python?) Và tôi thấy nó đặt một biến có tên curDatđến new Date(). Theo hiểu biết của tôi, Date()một chức năng đang được gọi và không có tham số nào được truyền cho nó - đúng không? Có phải vấn đề trong Date()chức năng hay đây chỉ là một trường hợp đơn giản về việc tôi phải định dạng ngày trong Bảng tính Google?

Đây là một dán của toàn bộ tập lệnh - nó ngắn:

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);
}

"(ngôn ngữ này được viết bằng gì? python?)" Đó là JavaScript, hãy xem developers.google.com/apps-script
Vidar S. Ramdal

Câu trả lời:



9

Sử dụng setNumberFormatđể đặt định dạng ngày (hoặc số) cho một ô cụ thể. Ví dụ này đặt ngày hôm nay trong A1 của trang tính hiện tại, được định dạng là MM / dd / yyyy:

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

Lý do nên sử dụng setNumberFormat(và không Utilities.formatDate, như thể thường được khuyên trên Internet):

  1. Utilities.formatDatekhông thay đổi định dạng ô; nó chuyển đổi nội dung của nó thành văn bản. Nếu bạn định sử dụng giá trị ngày trong các tính toán, bạn không muốn nó được chuyển đổi thành văn bản.
  2. Utilities.formatDateyêu cầu một để xác định múi giờ. Nếu bạn đặt một cái gì đó như "GMT + 1" và quốc gia của bạn quan sát Giờ tiết kiệm ánh sáng ban ngày, bạn có thể mong đợi các lỗi khó theo dõi sẽ xuất hiện vài tháng sau đó. Với setNumberFormat, giá trị ngày vẫn phù hợp với tất cả các giá trị ngày khác trong bảng tính, được điều chỉnh bởi cài đặt múi giờ của nó.

Lưu ý đến 2.: Bạn có thể sử dụng Session.getScriptTimeZone()làm tham số múi giờ.
Kos

Vấn đề là Session.getScriptTimeZone()đầu ra định dạng dài (ví dụ: America / Denver) chứ không phải "GMT-7" vì vậy bạn phải chuyển đổi nó bằng cách nào đó.
Craig.Pearce

@ Craig.Pearce Right và việc "America / Denver" chuyển đổi thành GMT-7 hay GMT-6 tùy thuộc vào thời gian Tiết kiệm ánh sáng ban ngày có hiệu lực hay không, tùy thuộc vào trạng thái của bạn và luật nào được thông qua ở trạng thái đó gần đây.

0

Với thời gian:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.