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

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

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

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

Q&A

解決済

1回答

467閲覧

GASで既存の配列から値を取得して新たな配列を作ろうとしているのですが、思うような動きをさせられません

tavernity_nagai

総合スコア20

Google Apps Script

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

0グッド

0クリップ

投稿2022/08/17 09:50

既出でしたら申し訳ございません。
スプレッドシートから従業員のリスト(社員氏名、雇用形態、所属の属性を持っている)を取得し、特定の所属のスタッフ名のみを抽出して新たな配列を作ろうと思っているのですが、配列を作ることができず困っております。
その配列はフォーム作製用に必要としております。

function addQuestions() { let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let employeeSheet = spreadsheet.getSheetByName('シート1'); let employeeValues = employeeSheet.getRange(4, 1, employeeSheet.getLastRow() , 3).getValues(); //employeeNameにA社の社員氏名を入れたい let employeeName = []; employeeName = employeeValues.forEach(value => { if(value[2] == 'A社'){ let array = []; array.push(value[0]); return array; } })

途中のvalue[0]の部分ではA社の従業員氏名が一人ずつ取れているのですが、配列に格納されません。
基本的な部分なのでしょうが、調べても分からず詰まってしまい困っております。
どなたか、ご教授いただけますと幸いです。

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

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

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

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

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

itagagaki

2022/08/17 10:03

forEachが回りきる前に、1要素pushしたらそこでreturnしちゃっているような。
tavernity_nagai

2022/08/17 12:13

ありがとうございます! まさにそうなってしまっており、全ての要素をpushしてからreturnをしてemployeeNameに格納したいのですが分からず...。
guest

回答1

0

ベストアンサー

下記でどうでしょうか。

js

1function addQuestions() { 2 let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 let employeeSheet = spreadsheet.getSheetByName('シート1'); 4 5 let employeeValues = employeeSheet.getRange(4, 1, employeeSheet.getLastRow() , 3).getValues(); 6 7 //employeeNameにA社の社員氏名を入れたい 8 let employeeName = []; 9 employeeValues.forEach(value => { 10 if(value[2] == 'A社'){ 11 employeeName.push(value[0]); 12 } 13 });

投稿2022/08/17 13:06

編集2022/08/17 13:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tavernity_nagai

2022/08/17 13:54

ありがとうございます! 無事に解決しました。 let employeeName = []; employeeName = employeeValues.forEach(value => { if(value[2] == 'A社'){ employeeName.push(value[0]); } }); このように変数に格納することは出来ないんですね... まだまだ基本が理解できておらず、勉強しないとです。
退会済みユーザー

退会済みユーザー

2022/08/17 23:30

少し難しいかもしれませんが、そのような形にしたい場合、下記のようにすることもできます。 let employeeName = employeeValues.filter(value => value[2] == 'A社').map(value => value[0]);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問