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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

609閲覧

判定が〇のセルを転記したい(エラー表示)

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/08/09 06:44

#前提・実現したいこと

GASで請求書を作成しています。
1)判定(J列)が〇かつ追加事項(O列)に記載があれば、
月(A列)・日(B列)・項目名(C列)・備考(D列)・追加事項(備考の1行下)に転記

2)判定(J列)が〇かつ追加事項(O列)が空欄であれば、
月(A列)・日(B列)・項目名(C列)・備考(D列)に転記

をしたいのですが、反映されずエラーができます。
どこを修正したらよいのでしょうか?お教えください。

|A|B|C|D||J|K|L|M|N|O|
|:--|:--:|--:|
|月|日|項目名|備考||判定|日付|項目名|備考|フラグ|追加事項|
|8|2|A商品|在庫あり||〇|8月2日|A商品|在庫あり|✔|先方確約済み|
||||先方確約済み||〇|8月3日|B商品Cabell|不明|✔||
|8|3|B商品|不明|||8月3日|A商品|在庫不明|✔||
|8|4|C商品|在庫あり||〇|8月4日|C商品|在庫あり|✔||

GoogleAppsScript

1function 表示() { 2 3//スプレッドシートAppを呼び出す 4var ss = SpreadsheetApp.getActiveSpreadsheet(); 5//アクティブシートを取得する 6var sheet = ss.getSheetByName("請求書");//data反映先 7var range = sheet.getRange("A11:I90"); 8 9sheet.unhideRow(range); 10sheet.getRange(11, 1, 34, 7).clearContent(); 11 12var range = sheet.getRange('J:O'); //J~O列に値を抜く 13var LastRow = range.getLastRow(); 14var data = sheet.getRange(11, 1, LastRow, 6).getValues(); 15for (var i = 0; i <= data.length; i++){ 16 if(data[i][0] ==="〇"){//J列が〇だったら 17 if(data[i][4]!==""){ //O列に文字列が入力されていたら 18 sheet.getRange(i, 1).setValue(data[i][1]);//A列にK列を転記 19 sheet.getRange(i, 2).setValue(data[i][1]);//B列にK列を転記 20 sheet.getRange(i, 3).setValue(data[i][2]);//C列にL列を転記 21 sheet.getRange(i, 4).setValue(data[i][3]);//D列にM列を転記 22 sheet.getRange(i + 1, 4).setValue(data[i][4]);//D列(1つ下の行)にM列を転記 23 } 24 else{ //O列が空白なら 25 sheet.getRange(i, 1).setValue(data[i][1]);//A列にK列を転記 26 sheet.getRange(i, 2).setValue(data[i][1]);//B列にK列を転記 27 sheet.getRange(i, 3).setValue(data[i][2]);//C列にL列を転記 28 sheet.getRange(i, 4).setValue(data[i][3]);//D列にM列を転記 29 } 30 } 31 } 32}

エラーメッセージ

TypeError: undefined からプロパティ「0」を読み取れません

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

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

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

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

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

guest

回答1

0

エラー

javascript

1//for (var i = 0; i <= data.length; i++){ 2 for (var i = 0; i < data.length; i++){

だと思いますが、転記ができない、はまた別な気がします。

やりたいのは、こういうことですかね?

javascript

1function q205227() { 2 3//スプレッドシートAppを呼び出す 4 const ss = SpreadsheetApp.getActiveSpreadsheet(); 5//アクティブシートを取得する 6 const sheet = ss.getSheetByName("請求書");//data反映先 7 const areaA11I90 = sheet.getRange("A11:I90"); 8 9 sheet.unhideRow(areaA11I90); 10 sheet.getRange(11, 1, 34, 7).clearContent();//Iは9だが? 11 12 const areaJO = sheet.getRange('J:O'); //J~O列に値を抜く 13 const LastRow = areaJO.getLastRow(); //これtホントにJ:Oの最終行取ってくれます? 14 const data = sheet.getRange(11, 10/* Jは10 */, LastRow, 6).getValues().reduce(function(a,c){ 15 if(c[0] !== "〇") return a; 16 var row1 = [c[1],c[1],c[2],c[3]]; 17 a.push(row1); 18 if(c[5] && c[5] !== "") { 19 var row2 = ["","","",c[5]]; 20 a.push(row2); 21 } 22 return a; 23 },[]); 24 sheet.getRange(11, 1, data.length, 4).setValues(data); 25}

投稿2019/08/09 08:23

編集2019/08/19 08:42
papinianus

総合スコア12705

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

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

退会済みユーザー

退会済みユーザー

2019/08/19 07:08

いつも大変ありがとうございます。 こちらの内容で反映されました。 ただ、追加事項(O列)がすべて空欄の場合は備考の下にすべて【undefined】と表示されてしまいます。 こちらを表示されないようにするにはどうしたら良いでしょうか?
papinianus

2019/08/19 08:41

それは、J列が○であるのに、O列が空白ということを意味してます? だとしたら仕様がかわってるんですが。 そもそもどういうデータ状態かわかんないっすね。 備考の下にすべて、というのもあいまいです。一応対策はいれときます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問