質問編集履歴

3

情報の追加

2021/12/28 02:31

投稿

aRyo
aRyo

スコア23

test CHANGED
File without changes
test CHANGED
@@ -1,64 +1,4 @@
1
- javascriptの処理が早すぎてGASの処理が終わる前に次にいき上手く処理が回りません。
2
-
3
-
4
-
5
- ●具体的な内容
6
-
7
- javascriptの変数をGoogleスプレッドシートのセルに反映させたい。
8
-
9
- ```javascript
10
-
11
- for(i = 0; i < 10; i++){
12
-
13
- google.script.run
14
-
15
- .write(str);//////ここでは省略していますが、strは変数で+iで変更される様にしています。
16
-
17
- }
18
-
19
- ```
20
-
21
-
22
-
23
- GASの方で繰り返しで送られてくる変数を4行目の下に追加していく流れです。
24
-
25
- ```GAS
26
-
27
- function write(aa) {
28
-
29
- var sheet = openSheet();
30
-
31
- //最終行を取得
32
-
33
- var maxRng_nyusyuko = sheet.getRange(sheet.getMaxRows(), 4);
34
-
35
-
36
-
37
- var lastRng_nyusyuko = maxRng_nyusyuko.getNextDataCell(SpreadsheetApp.Direction.UP);
38
-
39
- Logger.log(lastRng_nyusyuko.getA1Notation());
40
-
41
-
42
-
43
- //最終行のセルをアクティブ化して、一個下のセルに情報を追加
44
-
45
- const range_nyusyuko = sheet.getRange(lastRng_nyusyuko.getA1Notation());
46
-
47
- range_nyusyuko.offset(0, 0).activate();
48
-
49
-
50
-
51
-  let activeCell_nyusyuko = sheet.getActiveCell();
52
-
53
-  let selectedRow_nyusyuko = activeCell_nyusyuko.getRow();
54
-
55
-  let selectedColumn_nyusyuko = activeCell_nyusyuko.getColumn();
56
-
57
-  sheet.getRange(selectedRow_nyusyuko+1, selectedColumn_nyusyuko).setValue([aa])
58
-
59
- }
60
-
61
- ```javascriptの処理が非同期処理なためGASの処理が終わる前に次にいき上手く処理が回りません。
1
+ javascriptの処理が非同期処理なためGASの処理が終わる前に次にいき上手く処理が回りません。
62
2
 
63
3
  これを上手く処理が流れるようにJavascruiptとGASを同期処理させたいです。
64
4
 

2

情報の追加

2021/12/28 02:31

投稿

aRyo
aRyo

スコア23

test CHANGED
@@ -1 +1 @@
1
- javascriptの処理が早すぎて困っています。
1
+ javascriptの処理が非同期なため困っています。
test CHANGED
@@ -143,15 +143,3 @@
143
143
  ・待機時間を設ける → 意味なし。状況に変化なし
144
144
 
145
145
  ・Promiseを用いる → resolve();をGAS側に付けるとエラー Uncaught at aa
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
- この処理流すと、javascriptの処理が早すぎてGASのコードが回るきる前に次の変数を渡しセルの数や順番がごちゃごちゃになります。
154
-
155
-
156
-
157
- ここでjavascriptの処理をGASが回りきるまで待機などさせたいのですが、良い方法ありますでしょうか?

1

情報追加

2021/12/28 02:20

投稿

aRyo
aRyo

スコア23

test CHANGED
File without changes
test CHANGED
@@ -58,7 +58,95 @@
58
58
 
59
59
  }
60
60
 
61
+ ```javascriptの処理が非同期処理なためGASの処理が終わる前に次にいき上手く処理が回りません。
62
+
63
+ これを上手く処理が流れるようにJavascruiptとGASを同期処理させたいです。
64
+
65
+
66
+
67
+ ●具体的な内容
68
+
69
+ javascriptの変数をGoogleスプレッドシートのセルに反映させたい。
70
+
71
+ ```javascript
72
+
73
+ for(i = 0; i < 10; i++){
74
+
75
+
76
+
77
+ new Promise((resolve) => {
78
+
79
+ google.script.run
80
+
81
+ .write(str);//////ここでは省略していますが、strは変数で+iで変更される様にしています。
82
+
83
+ }, 1000);
84
+
85
+ }
86
+
87
+
88
+
61
89
  ```
90
+
91
+
92
+
93
+ GASの方で繰り返しで送られてくる変数を4行目の下に追加していく流れです。
94
+
95
+ ```GAS
96
+
97
+ function write(aa) {
98
+
99
+ var sheet = openSheet();
100
+
101
+ //最終行を取得
102
+
103
+ var maxRng_nyusyuko = sheet.getRange(sheet.getMaxRows(), 4);
104
+
105
+
106
+
107
+ var lastRng_nyusyuko = maxRng_nyusyuko.getNextDataCell(SpreadsheetApp.Direction.UP);
108
+
109
+ Logger.log(lastRng_nyusyuko.getA1Notation());
110
+
111
+
112
+
113
+ //最終行のセルをアクティブ化して、一個下のセルに情報を追加
114
+
115
+ const range_nyusyuko = sheet.getRange(lastRng_nyusyuko.getA1Notation());
116
+
117
+ range_nyusyuko.offset(0, 0).activate();
118
+
119
+
120
+
121
+  let activeCell_nyusyuko = sheet.getActiveCell();
122
+
123
+  let selectedRow_nyusyuko = activeCell_nyusyuko.getRow();
124
+
125
+  let selectedColumn_nyusyuko = activeCell_nyusyuko.getColumn();
126
+
127
+  sheet.getRange(selectedRow_nyusyuko+1, selectedColumn_nyusyuko).setValue([aa])
128
+
129
+ resolve();
130
+
131
+ }
132
+
133
+ ```
134
+
135
+
136
+
137
+ この処理流すと、javascriptの非同期なためGASのコードが回るきる前に次の変数を渡しセルの数や順番がごちゃごちゃになります。
138
+
139
+
140
+
141
+ **試したこと**
142
+
143
+ ・待機時間を設ける → 意味なし。状況に変化なし
144
+
145
+ ・Promiseを用いる → resolve();をGAS側に付けるとエラー Uncaught at aa
146
+
147
+
148
+
149
+
62
150
 
63
151
 
64
152