回答編集履歴
2
修正
test
CHANGED
@@ -54,16 +54,19 @@
|
|
54
54
|
var data = sheet.getRange('A2:D').getValues();
|
55
55
|
|
56
56
|
// 受付No.に対応する行を検索
|
57
|
+
// スプレッドシートに書き込み
|
58
|
+
function updateSheet(report_no,date,company,contents) {
|
59
|
+
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('営業報告');
|
60
|
+
var data = sheet.getRange('A2:D').getValues();
|
61
|
+
|
62
|
+
// 受付No.に対応する行を検索
|
57
63
|
for (var row = 0; row < data.length; row++) {
|
58
|
-
// A列が同じreprt_noなら
|
64
|
+
// A列が同じreport_noならば更新 または 空白ならば追加
|
59
|
-
if (data[row][0] === report_no) {
|
65
|
+
if (data[row][0] === report_no || data[row][0] === "") {
|
60
|
-
data[row] = [report_no,date,company,contents];
|
61
|
-
sheet.getRange(row + 2, 1, 1, data[row].length).setValues([data
|
66
|
+
sheet.getRange(row + 2, 1, 1, data[row].length).setValues([[report_no,date,company,contents]]);
|
62
|
-
break; //
|
67
|
+
break; // 目的を達したのでループから抜ける。
|
63
|
-
}
|
68
|
+
}
|
64
|
-
|
69
|
+
// 同じreport_noが見つかるか、空白になるまでループ。
|
65
|
-
sheet.getRange(row + 2, 1, 1, data[row].length).setValues([data[row]]);
|
66
|
-
break; // 追加が完了したらループを抜ける
|
67
70
|
}
|
68
71
|
}
|
69
72
|
```
|
1
fic
test
CHANGED
@@ -10,6 +10,8 @@
|
|
10
10
|
BはdoPostを呼び出しません。
|
11
11
|
この事実、「新規作成」という言葉、そして「末尾に追加されてしまう」という状況から推測すると、**doPost の中にある 「 //[新規フォーム処理 省略]」が悪さしてるとしか考えられません。**
|
12
12
|
(ここまでたどり着くのにコード読みながら 5秒くらいかかりました)
|
13
|
+
|
14
|
+
まあ、本当のところは省略されてるのでわかりませんが。
|
13
15
|
|
14
16
|
多分ですが「HTMLから渡された report_no を スプレッドシートのA列のデータと比較して、どの行の A列の値とも異なっていれば末尾行に追加」みたいなコードを書かれたんでしょうけれど、その中にバグがあって、本来末尾に追記してはいけないのに追記してしまうようなアルゴリズムになってると思われます。
|
15
17
|
(つまり二重送信でもなんでもなくて、単なる制御ミス)
|