teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

スクリプト全文を追加しました。

2018/08/06 02:41

投稿

ALHIRU
ALHIRU

スコア11

title CHANGED
File without changes
body CHANGED
@@ -27,4 +27,55 @@
27
27
  一応teratailの過去の質問も調べたのですが、「範囲外のセル参照です」はrangeのsortの時にエラーとして出てくるという事象が見つかりましたが、私の場合はメソッドを動かす前から取得の段階でエラーが出ています。
28
28
  それとも実はもっと下流の行でエラーが出ていて行 8はGoogleapps scriptのシステムの誤認なのでしょうか?
29
29
 
30
- ### 補足情報(FW/ツールのバージョンなど)
30
+ ### 補足情報(FW/ツールのバージョンなど)
31
+ コメント下さった方ありがとうございます。
32
+ すいません、後出しになってしまいましたが該当の行8だけでは解決しそうにないのでスクリプト全文を公開させていただきます。
33
+ このスクリプトをスプレッドシートの値の変更をトリガーにして走らせているので、ご指摘頂いているようなActiveCellが取得できていない可能性は低いと考えております。(例えば時刻で起動するようなトリガーでActiveCellが取得できない可能性はありますが、このスクリプトの場合は現にセルの編集を行った時に走っていますしアウトプットであるNoteへの書き込みもできています。)
34
+ 本日気付いたのですが、このスクリプトは11~19行で定義してあるようにCheck listというタブ上でしか動かないようにしていますが、実際は他のタブ上でも動いていてログを調べるとRangeCheck = undefinedでも21行から始まるif文が走っているようです。
35
+ このあたりに何か構造的な問題があるのでしょうか?よろしくお願いします。
36
+
37
+ function MemoAsLog() {
38
+ //Active
39
+
40
+ var SpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
41
+ var Sheet = SpreadSheet.getActiveSheet();
42
+
43
+ var SheetName = Sheet.getSheetName();
44
+ var CellColumn = Sheet.getActiveCell().getColumn();
45
+ var CellRow = Sheet.getActiveCell().getRow();
46
+
47
+ if(SheetName=="Check list" && CellColumn==9){
48
+ var RangeCheck = 1
49
+ }
50
+ if(SheetName=="Check list" && CellColumn!=9){
51
+ RangeCheck = 2
52
+ }
53
+ if(SheetName=="Check list" && CellColumn==8){
54
+ RangeCheck = 3
55
+ }
56
+
57
+ if(RangeCheck == 1||3){
58
+ var MyDate = new Date();
59
+ var ToDay = Utilities.formatDate(MyDate,'Asia/Tokyo', "yyyy/MM/dd");
60
+ var UserID = Session.getActiveUser().getEmail();
61
+ var User = UserID.split("@");
62
+ var ExistingNote = Sheet.getActiveCell().getNote();
63
+ var CellValue = Sheet.getActiveCell().getValue();
64
+ Sheet.getActiveCell().clearNote();
65
+ if(!ExistingNote){
66
+ Sheet.getActiveCell().setNote(ToDay+"_"+User[0]+"_"+CellValue);
67
+ }
68
+ else{
69
+ Sheet.getActiveCell().setNote(ExistingNote+"\n"+ToDay+"_"+User[0]+"_"+CellValue);
70
+ }
71
+ }
72
+ if(RangeCheck == 2){
73
+ Sheet.getActiveCell().clearNote();
74
+ if(!ExistingNote){
75
+ Sheet.getActiveCell().setNote(ToDay+"_"+User[0]);
76
+ }
77
+ else{
78
+ Sheet.getActiveCell().setNote(ExistingNote+"\n"+ToDay+"_"+User[0]);
79
+ }
80
+ }
81
+ }