このGoogle Appsスクリプトで日付をフォーマットする方法


9

このランクチェックスクリプトを見つけました。どこで見つけたのか正確にはわかりませんが、Googleドキュメントとランクチェックプロセスを自動化するスクリプトに基づいて作成されています。私は少しコーディングを理解していますが、これを実際に理解するには十分ではありません。私はここの誰かがそれを理解できると確信しています。

スクリプトは毎晩実行され、Googleにキーワードを照会してから、Googleスプレッドシートに空白のセルを入力します。表示される日付形式は15.06.2014 06:08:21

など、私がより慣れている日付形式にしたいのですmm/dd/yyyyが。

とにかく、私はスクリプト(これはどの言語で書かれているのですか?python?)をいじってみましcurDatnew Date()。私の理解から、Date()呼び出されている関数はあり、それにパラメーターが渡されていません-正しいですか?Date()関数に問題があるのですか、それともGoogleスプレッドシートで日付をフォーマットする必要があるのは単なるケースですか?

これがスクリプト全体の貼り付けです-短いです:

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

「(これはどの言語で書かれていますか?python?)」これはJavaScriptです
。developers.google.com/ apps

回答:



9

setNumberFormat特定のセルの日付(または数値)形式を設定するために使用します。次の例では、今日の日付を現在のシートのA1に入れ、MM / dd / yyyyの形式にします。

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

使用する理由setNumberFormatUtilities.formatDateインターネットでよく勧められるようなものではありません):

  1. Utilities.formatDateセルの形式は変更されません。コンテンツをテキストに変換します。計算で日付値を使用する場合は、テキストに変換する必要はありません。
  2. Utilities.formatDateタイムゾーンを指定する必要があります。「GMT + 1」のようなものを配置し、国が夏時間を遵守している場合、追跡が困難なバグが数か月後に発生することが予想されます。を使用するsetNumberFormatと、日付値はスプレッドシート内の他のすべての日付値と一貫性を保ち、タイムゾーン設定によって管理されます。

2.の注:Session.getScriptTimeZone()タイムゾーンパラメータとして使用できます。
コス、

問題は、Session.getScriptTimeZone()「GMT-7」ではなく長い形式(America / Denverなど)を出力するため、何らかの方法で変換する必要があることです。
Craig.Pearce 2018年

@ Craig.Pearce Right、および「America / Denver」がGMT-7またはGMT-6に変換されるかどうかは、夏時間が有効かどうかによって異なります。これは、現在の状態と、その状態で渡された法律によって異なります。最近。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.