質問編集履歴

1

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

2018/08/06 02:41

投稿

ALHIRU
ALHIRU

スコア11

test CHANGED
File without changes
test CHANGED
@@ -57,3 +57,105 @@
57
57
 
58
58
 
59
59
  ### 補足情報(FW/ツールのバージョンなど)
60
+
61
+ コメント下さった方ありがとうございます。
62
+
63
+ すいません、後出しになってしまいましたが該当の行8だけでは解決しそうにないのでスクリプト全文を公開させていただきます。
64
+
65
+ このスクリプトをスプレッドシートの値の変更をトリガーにして走らせているので、ご指摘頂いているようなActiveCellが取得できていない可能性は低いと考えております。(例えば時刻で起動するようなトリガーでActiveCellが取得できない可能性はありますが、このスクリプトの場合は現にセルの編集を行った時に走っていますしアウトプットであるNoteへの書き込みもできています。)
66
+
67
+ 本日気付いたのですが、このスクリプトは11~19行で定義してあるようにCheck listというタブ上でしか動かないようにしていますが、実際は他のタブ上でも動いていてログを調べるとRangeCheck = undefinedでも21行から始まるif文が走っているようです。
68
+
69
+ このあたりに何か構造的な問題があるのでしょうか?よろしくお願いします。
70
+
71
+
72
+
73
+ function MemoAsLog() {
74
+
75
+ //Active
76
+
77
+
78
+
79
+ var SpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
80
+
81
+ var Sheet = SpreadSheet.getActiveSheet();
82
+
83
+
84
+
85
+ var SheetName = Sheet.getSheetName();
86
+
87
+ var CellColumn = Sheet.getActiveCell().getColumn();
88
+
89
+ var CellRow = Sheet.getActiveCell().getRow();
90
+
91
+
92
+
93
+ if(SheetName=="Check list" && CellColumn==9){
94
+
95
+ var RangeCheck = 1
96
+
97
+ }
98
+
99
+ if(SheetName=="Check list" && CellColumn!=9){
100
+
101
+ RangeCheck = 2
102
+
103
+ }
104
+
105
+ if(SheetName=="Check list" && CellColumn==8){
106
+
107
+ RangeCheck = 3
108
+
109
+ }
110
+
111
+
112
+
113
+ if(RangeCheck == 1||3){
114
+
115
+ var MyDate = new Date();
116
+
117
+ var ToDay = Utilities.formatDate(MyDate,'Asia/Tokyo', "yyyy/MM/dd");
118
+
119
+ var UserID = Session.getActiveUser().getEmail();
120
+
121
+ var User = UserID.split("@");
122
+
123
+ var ExistingNote = Sheet.getActiveCell().getNote();
124
+
125
+ var CellValue = Sheet.getActiveCell().getValue();
126
+
127
+ Sheet.getActiveCell().clearNote();
128
+
129
+ if(!ExistingNote){
130
+
131
+ Sheet.getActiveCell().setNote(ToDay+"_"+User[0]+"_"+CellValue);
132
+
133
+ }
134
+
135
+ else{
136
+
137
+ Sheet.getActiveCell().setNote(ExistingNote+"\n"+ToDay+"_"+User[0]+"_"+CellValue);
138
+
139
+ }
140
+
141
+ }
142
+
143
+ if(RangeCheck == 2){
144
+
145
+ Sheet.getActiveCell().clearNote();
146
+
147
+ if(!ExistingNote){
148
+
149
+ Sheet.getActiveCell().setNote(ToDay+"_"+User[0]);
150
+
151
+ }
152
+
153
+ else{
154
+
155
+ Sheet.getActiveCell().setNote(ExistingNote+"\n"+ToDay+"_"+User[0]);
156
+
157
+ }
158
+
159
+ }
160
+
161
+ }