質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

836閲覧

Google Apps Scriptで転記

maxkey

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/11/16 05:34

Google Apps Scriptで
H列2行目から下方向に〇という文字が入っていた場合
O列から最終列まで100と入力するコードを記載したいと
考えておりますが、
以下のコードではどうしても最終列を最終列から右に列を+15列ほど自動で
追加してしまいます。
また、H列を下方向に〇という値が無いか見て、あったらi行目のO列から
最終列まで100という数値を入力したいと考えております。

Google Apps Scriptの初心者ですが、あまり参考になるサイトがなくて
手詰まってしまいました。

どなたかご教授をお願いできませんでしょうか。

「参考にしたサイト」
https://www.pre-practice.net/2018/01/blog-post_21.html

function input1(){ var key = "〇"; var col = "H"; var sh = SpreadsheetApp.getActiveSheet(); lastcol = sh.getLastColumn(); var row = get_row(key, col, sh); for(var i = 1; i <= lastcol; i++){ hi = sh.getRange(1, i).getValue() sh.getRange(row,15,1,lastcol).setValue("100"); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんなのはどうでしょうか?

gas

1 2function input2() { 3 let key = "〇"; 4 let col = "H"; 5 let colO = "O"; 6 let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); 7 let last_row = sheet.getLastRow(); 8 let maxColName = sheet.getRange(1, sheet.getMaxColumns()).getA1Notation().replace(/\d+/, ''); 9 console.log(maxColName); 10 11 12 let array = sheet.getRange(col + "1:" + col + last_row).getValues().flat(); 13 14 array.forEach(function (value, index) { 15 if (value != key) { return }; 16 let range = sheet.getRange(String(colO) + (Number(index) + 1) + ":" + maxColName + (Number(index) + 1)); 17 18 range.setValues(range.getValues().map(function (arr) { 19 return arr.map(function (d) { return "100" }); 20 })) 21 }); 22}

投稿2020/12/31 05:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

手詰まりの手助けを出来ればと思い、
微力ながら回答を書いてみます。

といいながら、
私の方から質問があるのですが、
i行目のiは、私達が指定して良い変数なのでしょうか?

例えば今回の場合、for()の中ではありますが、iを指定しています。
このfor()の中のiが、私達が指定しても良いi行目のiであるならば、
以下の方法はどうでしょうか?

script

1function input1() { 2 var key = "〇"; 3 var col = "H"; 4 let cloumnO = 15; 5 let i = 1; 6 var sh = SpreadsheetApp.getActiveSheet(); 7 lastcol = sh.getMaxColumns(); 8 sh.getRange(i, cloumnO, 1, lastcol + 1 - cloumnO).setValue("100"); 9} 10 11 12function get_row(key, col, sh) { 13 var array = get_array(sh, col); 14 var row = array.indexOf(key) + 1; 15 return row; 16} 17 18function get_array(sh, col) { 19 var last_row = sh.getLastRow(); 20 var range = sh.getRange(col + "1:" + col + last_row) 21 var values = range.getValues(); 22 var array = []; 23 for (var i = 0; i < values.length; i++) { 24 array.push(values[i][0]); 25 } 26 return array; 27}

若干私の中で質問の理解が追いついていない状況ではありますが、
もしかすると、こういう事をやりたいのかもしれない、というのも以下に記してみます。

script

1 2 3function input1(){ 4 var key = "〇"; 5 var col = "H"; 6 var sh = SpreadsheetApp.getActiveSheet(); 7 lastcol = sh.getMaxColumns(); 8 var row = get_row(key, col, sh); 9 for(var i = 1; i <= lastcol; i++){ 10 hi = sh.getRange(1, i).getValue() 11 sh.getRange(row,15,1,lastcol + 1 - 15).setValue("100"); 12 } 13} 14 15 16function get_row(key, col, sh) { 17 var array = get_array(sh, col); 18 var row = array.indexOf(key) + 1; 19 return row; 20} 21 22function get_array(sh, col) { 23 var last_row = sh.getLastRow(); 24 var range = sh.getRange(col + "1:" + col + last_row) 25 var values = range.getValues(); 26 var array = []; 27 for (var i = 0; i < values.length; i++) { 28 array.push(values[i][0]); 29 } 30 return array; 31}

それでは失礼いたします。

投稿2020/12/27 14:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maxkey

2020/12/30 09:02

akirayonaha様 ご回答いただきありがございました! 2番目にいただいた解答が希望に近い内容のものとなっておりました。 最初に見つかったH列の”〇”に対しての処理が同じ行のO列以降に100と入ることが希望でした。 もう一点お伺いしてもよろしいでしょうか。 こちらのコードですが、H列で複数”〇”を見つけては、O列以降に100と入力するためのループをしたい のですが、うまくいきません。以下のコードを少し変更すればできますでしょうか。 for(var i = 1; i <= lastcol; i++){
退会済みユーザー

退会済みユーザー

2020/12/31 05:03

私の中では、そもそものコードが、 上から順に検索した一つの○にしか反応しないし、 一つの○のO列以降に100と入力するというふうにしか見えてないので、 書き直した方が良いとも思います。 少し時間をいただき、私なりの書き方でのスクリプトを投稿してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問