セルの値の参照

467 views
Skip to first unread message

冬木照

unread,
Feb 7, 2014, 11:52:53 AM2/7/14
to google-app...@googlegroups.com
現在、スプレッドシートで部活動の出欠確認をしています。

そこで、Scriptを使ってその日の欠席者の行のみ表示させたいのですが、うまくいきません。

今やっていることは
1.B1にTODAY関数で今日の日付を表示させる
2.B列にフォームからyyy/mm/dd(例:2014/02/08)の値が入力される(3行目から)
3.一旦3行目以降を非表示にする
4.for文で3行目から参照していく
5.if文で(B1==B列の値)の時にその行を再表示させる

ということをしています。
しかし、値が同じ場合でも再表示されません。
どなたか原因を教えていただけないでしょうか?
スクリプトは初めてなので、なかなか思うようにいかないです

参考までに、現在作っているスクリプトを載せておきます。

function onOpen() {
  
  SpreadsheetApp.getActiveSheet().setActiveSelection("A1"); 
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastrow = sheet.getLastRow();
  var range = sheet.getDataRange();
  sheet.sort(2); //データを日付順に並び替え
  sheet.hideRows(3,lastrow); //一旦3行目以降を非表示
  
  
  for (i = 3; i <= lastrow; i++) {
    var cell = sheet.getRange(i, 2).getValue(); //その行の日付を取得
    var today = sheet.getRange(1, 2).getValue(); //本日の日付を取得
    if(cell == today) {
      sheet.showRows(i); //(i,2)のセルの値と(1,2)のセルの値が等しければ、i行目を再表示
    }
  }
  SpreadsheetApp.getActiveSpreadsheet().toast("処理が完了しますた(*´ω`*)", "完了",10);
}

Tatsuya Nakano

unread,
Feb 8, 2014, 1:00:30 AM2/8/14
to google-app...@googlegroups.com
GASは詳しくないのですがstackoverflowに書かれていました。
Date型だと==での比較はダメみたいですね。
http://stackoverflow.com/questions/11174385/compare-two-dates-google-apps-script

var cell = sheet.getRange(i, 2).getValue(); //その行の日付を取得
var today = sheet.getRange(1, 2).getValue(); //本日の日付を取得
 
上記の文の最後に.valueOf()を付けてみてください。
var cell = sheet.getRange(i, 2).getValue().valueOf(); //その行の日付を取得
var today = sheet.getRange(1, 2).getValue().valueOf(); //本日の日付を取得  


冬木照

unread,
Feb 8, 2014, 7:36:35 AM2/8/14
to google-app...@googlegroups.com
ありがとうございます、何とか解決できました

やっぱりDateのままではダメなんですね

getDateとかで年・月・日をそれぞれ取得したらなんとかなりました

2014年2月8日土曜日 15時00分30秒 UTC+9 Tatsuya Nakano:
Reply all
Reply to author
Forward
0 new messages