
追記内容
下記参照
qnoir様,ご指摘ありがとうございます.
現状
目的,ゴール
スクリプトによって
「ボタンを押したときのみ,任意の列の計算を更新する」
「C列配置のチェックボックスをTrueにし,かつ,値の貼り付けで完了,かつすでに貼り付けが完了している場合は更新しない」
を達成したいです.
このようにすることで,GoogleSheets再計算のたびにAPIリソースが消費されてしまうことを回避する
ことが目的です
エラー概要
図の例では,( K, 9 ), ( K, 10 )が翻訳されるはず,と期待しています.
1,
K列に計算結果を出力させたく,
"range"定義に合わせて
関数により(無理やり)範囲指定したものを実行させていますが,
エラーが発生しました.
GoogleTranslate関数の第1引数が範囲指定だから,ということが想定されます.
2,
なお,arrayformula関数で配列式も試しましたが,
GoogleTranslate関数は複数の対象を一つのセル内に出力するため,断念しました.
現コード
GAS
1// ボタンで指定セルに指定計算結果を, https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11157169156 2function click() { 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 var sh = ss.getActiveSheet(); 5 var range = sh.getRange('K2:K') 6 range.setFormula('=IF(C2:C=True, GOOGLETRANSLATE(H2:H, "en", "ja"), "")'); 7 range.setValue(range.getValue()) 8} 9 10
お聞きしたいこと
1, 回答者様が考えてらっしゃるベストプラクティス
2, 計算式だけの解決であれば計算式の修正
3, 計算式ではない点で修正が必要であれば
ご教授いただけたら幸いです.
ご返信お待ちしております.よろしくお願いいたします.
すでに頂いているご質問について
① 質問のコードで何かエラーが発生しているのでしょうか?
GoogleTranslate関数の第1引数が範囲指定だから,ということが想定されます.
②もしくは、 質問のコードでは、希望する動作にならないのでしょうか?
はい,希望する動作になっておりません.関数計算の結果が出力されることを希望しています.
1.今回制御対象とするのは、K列の2行目以降のセル(行数は不定)である。 >>> おっしゃるとおりでございます.
2.C列に手入力でデータが入っており、K列の各行は、C列の数値を使って計算した計算結果を表示する。 >>> おっしゃるとおりでございます.
3.ボタンを押したら、下記の動作を行うものとする。
_・「C列に値が入っているが、K列には値の入っていない"行"」に対して
__ =IF(C▲=True, 1, "") ※▲は各行番号
__ に該当する数式を設定する。(K列のうち、すでに値貼り付けとなっているセルには数式を設定しない) >>> おっしゃるとおりでございます.
4.各行に数式を設定した直後、数式設定したセルに対して、その計算結果を値貼り付けする。 >>>はい,計算結果が関数のままでないことを達成したいです.



回答1件
あなたの回答
tips
プレビュー