🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

2回答

2945閲覧

GAS このスクリプト、どうやったらうまく動きますか?

Al_horn

総合スコア5

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2019/10/16 17:24

編集2019/10/17 01:45

GAS初心者です。汚いスクリプトですみません。スプレッドシートで以下のスクリプトが正常に作動するようにするにはどうすればよいでしょうか?
現在エラーはないのですが全く機能していないようです。

GAS

1function findRow(sheet,val,col){ 2 3 var dat = sheet.getDataRange().getValues(); //受け取ったシートのデータを二次元配列に取得 4 5 for(var i=1;i<dat.length;i++){ 6 7 if(dat[i][col-1] === val){ 8 9 return i+1; 10 11 } 12 13 } 14 15 return 0; 16 17} 18 19 var ss = SpreadsheetApp.getActiveSpreadsheet(); 20 var sh1 = ss.getSheetByName("シート1"); 21 var sh2 = ss.getSheetByName("シート2"); 22 var drop = sh1.getRange(17, 24).getValue(); 23 24 var list = findRow(sh2,drop,1); 25 26function onEdit(e){ 27 var row = e.range.getRow(); 28 var col = e.range.getColumn(); 29 var val = e.range.getValue(); 30 31 if(row === 17 && col === 24){ 32 if(list === 0){ 33 sh2.appendRow(drop); 34 } else { 35 for(k=2;k=9;k++){ 36 sh1.getRange(23+[k], 25).setValue(sh2.getRange(list, [k]).getValue()); 37 } 38 } 39 } else { 40 if((row === 25 || row === 26 || row === 27 || row === 28 || row === 29 || row === 30 || row === 31 || row === 32) && col === 25){ 41 sh2.getRange(list, row-23).setValue(val); 42 } 43 } 44}

実現したいこと
➀ シート1のX17に任意の値を入力するとシート2のA列から一致する値のあるセルを見つける、ない場合はA列の下に挿入する。
➁ ➀で見つけたセルの行について、
シート1のX17,Y25,Y26,Y27,Y28,Y29,Y30,Y31,Y32,Y33とシート2のA列J列をつなげる。
➂ シート2の対応するB列
J列にすでに値があればそれをつなげたシート1の各セルに表示する。
➃ シート1の各セルを編集するとシート2の各セルも書き換えられる。

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

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

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

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

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

azuapricot

2019/10/17 00:23

今どうなっているのか記載しましょう エラーなのか、動作がおかしいのか、具体的に。
Al_horn

2019/10/17 01:46

ありがとうございます。記載いたしました。
guest

回答2

0

for(k=2;k=9;k++)部分、for(var k=2;k<=9;k++)では無いでしょうか?

投稿2019/10/28 06:53

hiroshi0240

総合スコア640

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

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

0

質問のプログラムの以下の行で使われている stIdDropという変数は、どこにも定義がありませんし、値が初期化(代入)されてもいません。

var list = findRow(sh2,stIdDrop,1);

これがトラブルの原因になっているのではないでしょうか?

投稿2019/10/17 01:39

coco_bauer

総合スコア6915

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

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

Al_horn

2019/10/17 01:44

ありがとうございます。stIdDrop→dropでした。訂正しました。再度実行しましたが、うまくゆきません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問