質問編集履歴
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,27 +1,67 @@
|
|
1
|
+
# 追記内容
|
2
|
+
下記参照
|
3
|
+
qnoir様,ご指摘ありがとうございます.
|
4
|
+
|
5
|
+
# 現状
|
6
|
+
現コードでは添付の画像結果が出力されます.
|
7
|
+

|
8
|
+
|
9
|
+
|
1
10
|
# 目的,ゴール
|
2
11
|
スクリプトによって
|
3
12
|
「ボタンを押したときのみ,任意の列の計算を更新する」
|
13
|
+
「C列配置のチェックボックスをTrueにし,かつ,値の貼り付けで完了,かつすでに貼り付けが完了している場合は更新しない」
|
4
14
|
を達成したいです.
|
5
|
-
列全体を計算させたい,かつ,値の貼り付けで完了,かつ次回以降は値の貼り付けされた行に関しては更新しない
|
6
|
-
このようにすることで,API
|
15
|
+
このようにすることで,GoogleSheets再計算のたびにAPIリソースが消費されてしまうことを回避する
|
7
16
|
ことが目的です
|
8
17
|
|
18
|
+
# エラー概要
|
19
|
+
図の例では,( K, 9 ), ( K, 10 )が翻訳されるはず,と期待しています.
|
20
|
+
1,
|
21
|
+
K列に計算結果を出力させたく,
|
22
|
+
"range"定義に合わせて
|
23
|
+
関数により(無理やり)範囲指定したものを実行させていますが,
|
24
|
+
エラーが発生しました.
|
25
|
+
GoogleTranslate関数の第1引数が範囲指定だから,ということが想定されます.
|
26
|
+
2,
|
27
|
+
なお,arrayformula関数で配列式も試しましたが,
|
28
|
+
GoogleTranslate関数は複数の対象を一つのセル内に出力するため,断念しました.
|
29
|
+
|
9
|
-
# コード
|
30
|
+
# 現コード
|
10
31
|
``` GAS
|
11
32
|
// ボタンで指定セルに指定計算結果を, https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11157169156
|
12
33
|
function click() {
|
13
|
-
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
34
|
+
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
14
|
-
var sh = ss.getActiveSheet();
|
35
|
+
var sh = ss.getActiveSheet();
|
15
|
-
var range = sh.getRange('K2:K')
|
36
|
+
var range = sh.getRange('K2:K')
|
16
|
-
range.setFormula('=IF(C2:C=True,
|
37
|
+
range.setFormula('=IF(C2:C=True, GOOGLETRANSLATE(H2:H, "en", "ja"), "")');
|
17
|
-
range.setValue(range.getValue())
|
38
|
+
range.setValue(range.getValue())
|
18
39
|
}
|
40
|
+
|
41
|
+
|
19
42
|
```
|
20
|
-
|
21
43
|
# お聞きしたいこと
|
22
|
-
1, 回答者様が
|
44
|
+
1, 回答者様が考えてらっしゃるベストプラクティス
|
23
45
|
2, 計算式だけの解決であれば計算式の修正
|
24
46
|
3, 計算式ではない点で修正が必要であれば
|
25
47
|
|
26
48
|
ご教授いただけたら幸いです.
|
27
49
|
ご返信お待ちしております.よろしくお願いいたします.
|
50
|
+
|
51
|
+
# すでに頂いているご質問について
|
52
|
+
① 質問のコードで何かエラーが発生しているのでしょうか?
|
53
|
+
GoogleTranslate関数の第1引数が範囲指定だから,ということが想定されます.
|
54
|
+
|
55
|
+
②もしくは、 質問のコードでは、希望する動作にならないのでしょうか?
|
56
|
+
はい,希望する動作になっておりません.関数計算の結果が出力されることを希望しています.
|
57
|
+
|
58
|
+
1.今回制御対象とするのは、K列の2行目以降のセル(行数は不定)である。 >>> おっしゃるとおりでございます.
|
59
|
+
2.C列に手入力でデータが入っており、K列の各行は、C列の数値を使って計算した計算結果を表示する。 >>> おっしゃるとおりでございます.
|
60
|
+
3.ボタンを押したら、下記の動作を行うものとする。
|
61
|
+
_・「C列に値が入っているが、K列には値の入っていない"行"」に対して
|
62
|
+
__ =IF(C▲=True, 1, "") ※▲は各行番号
|
63
|
+
__ に該当する数式を設定する。(K列のうち、すでに値貼り付けとなっているセルには数式を設定しない) >>> おっしゃるとおりでございます.
|
64
|
+
|
65
|
+
4.各行に数式を設定した直後、数式設定したセルに対して、その計算結果を値貼り付けする。 >>>はい,計算結果が関数のままでないことを達成したいです.
|
66
|
+
|
67
|
+
|