質問編集履歴
1
1.問題が解決したと思っていたが、じつはwaitLock部分は、全く機能していないようだった。2.全コードを本文末尾に追加。
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
2の処理を実行してもらいたいと考え、
|
9
9
|
|
10
10
|
1と2の間に、下記コードを、どこかのWEBサイトから拾ってきて(注1)挿入しました。
|
11
|
-
|
11
|
+
・・・が、まったく挙動は変わりませんでした。
|
12
12
|
|
13
13
|
```googleAppScript
|
14
14
|
// Get a script lock, because we're about to modify a shared resource.
|
@@ -31,4 +31,63 @@
|
|
31
31
|
どうぞ、よろしくお願いします。
|
32
32
|
|
33
33
|
|
34
|
+
```すべてのコードはこちらです。
|
35
|
+
function up_to_firestore() {
|
36
|
+
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
37
|
+
var sheet1 = ss.getSheetByName('kaitou1');
|
38
|
+
|
39
|
+
//《タイトル行取得部分》
|
40
|
+
var firstRange = sheet1.getRange(2, 5, 1,7);
|
41
|
+
var firstRowValues = firstRange.getValues();
|
42
|
+
var titleColumns = firstRowValues[0];
|
43
|
+
|
44
|
+
//回答データ取得
|
45
|
+
var sheetData = sheet1.getSheetValues(3, 5, sheet1.getLastRow(), 7);
|
46
|
+
|
47
|
+
//ループ開始
|
48
|
+
sheetData.forEach(function(value, index) {
|
49
|
+
// 済による分岐
|
50
|
+
if (value[0] !="" && value[6] !="済") {
|
51
|
+
sheet1.getRange(3+index, 11).setValue("済");
|
52
|
+
sheet1.getRange(2+index,9,1,2).copyTo(sheet1.getRange(3+index,9,1,2));
|
53
|
+
|
54
|
+
// コピー処理終わるまで待機させる・・・つもりが、
|
55
|
+
var lock = LockService.getScriptLock();
|
56
|
+
// Wait for up to 30 seconds for other processes to finish.
|
57
|
+
lock.waitLock(30000);
|
58
|
+
if (!lock.hasLock()) {
|
59
|
+
Logger.log('Could not obtain lock after 10 seconds.');
|
60
|
+
}
|
61
|
+
|
62
|
+
//その行データをrowValuesに入れる
|
63
|
+
var rowValues = sheetData[index];
|
64
|
+
|
65
|
+
//JSONArrayつくる
|
66
|
+
var jsonArray = [];
|
67
|
+
var json = new Object();
|
68
|
+
for(var j=0; j<titleColumns.length; j++) {
|
69
|
+
json[titleColumns[j]] = rowValues[j];
|
70
|
+
}
|
71
|
+
jsonArray.push(json);
|
72
|
+
|
73
|
+
|
74
|
+
// CloudFirestoreの認証とUP
|
75
|
+
var firestore = firestoreData();
|
76
|
+
|
77
|
+
try{
|
78
|
+
firestore.createDocument(●●●, jsonArray);
|
79
|
+
}catch(e){
|
80
|
+
Logger.log("エラー:" + e.message)//同じドキュメント名が合った場合は、新しい方にデータを更新
|
81
|
+
firestore.updateDocument(●●●, jsonArray);
|
82
|
+
}
|
83
|
+
|
84
|
+
}
|
85
|
+
});
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
```
|
91
|
+
|
92
|
+
|
34
93
|
注1:1年以上前に、ネットで探して拾ったコードなので、URL情報をご提供できません…。
|