2つの配列でマッチしたものをスプレッドシートに記入するコードを書きたいと思っています。
ただし、基準となる配列の要素全てが各配列にはありません。
以下の例示をご覧いただくとわかるかと思います。
indexOf、match、searchなど色々試しているのですが、うまく行きません。
参考までに自分のコーディングを掲載します。
お知恵を貸していただけると幸いです。
論点としては、
・配列の要素の文字列の部分検索
・配列同士のマッチング
の2段階かと個人的には分析しています。
現状の考え方では、基準列の文字をフラグとして、
それにあう要素をセルに記述するといった考え方をしています。
この考え方より良い方法があれば、併せてご教示いただけると幸いです。
また、簡略化のため、研究・経理・教授以外の要素は増えないと仮定しています。
現在(スタックしている状況:各団体について、配列化してappendを用いて追加する段階までは達成できていて、そちらは省略しています。)
例1
elements = ["研究", "経理", "教授"]
team_1 = ["研究代表 田中", "准教授 山田"]
team_2 = ["研究係 佐藤", "経理係 鈴木"]
team_3 = ["研究チーム 加藤", "経理チーム 吉田", "客員教授 山川"]
現況
研究 | 経理 | 教授 |
---|---|---|
研究代表 田中 | 准教授 山田 | null |
研究係 佐藤 | 経理係 鈴木 | null |
研究チーム 加藤 | 経理チーム 吉田 | 客員教授 山川 |
やりたいこと(目標)
研究 | 経理 | 教授 |
---|---|---|
研究代表 田中 | null | 准教授 山田 |
研究係 佐藤 | 経理係 鈴木 | null |
研究チーム 加藤 | 経理チーム 吉田 | 客員教授 山川 |
例2
elements = ["営業", "経理", "人事","エンジニア"]
company_1 = ["営業部 田中", "エンジニア部 山田"]
company_2 = ["エンジニアチーム 佐藤"]
company_3 = ["経理課 加藤", "人事課 鈴木"]
company_4 = ["営業担当 田山", "経理担当 伊藤","人事担当 鈴原","エンジニア担当 川山"]
現況
営業 | 経理 | 人事 | エンジニア |
---|---|---|---|
営業部 田中 | エンジニア部 山田 | null | null |
エンジニアチーム 佐藤 | null | null | null |
経理課 加藤 | 人事課 鈴木 | null | null |
営業担当 田山 | 経理担当 伊藤 | 人事担当 鈴原 | エンジニア担当 川山 |
やりたいこと(目標)
営業 | 経理 | 人事 | エンジニア |
---|---|---|---|
営業部 田中 | null | null | エンジニア部 山田 |
null | null | null | エンジニアチーム 佐藤 |
null | 経理課 加藤 | 人事課 鈴木 | null |
営業担当 田山 | 経理担当 伊藤 | 人事担当 鈴原 | エンジニア担当 川山 |
GAS
1function myFunction() { 2 elements = ["営業", "経理", "人事","エンジニア"] 3 company_1 = ["営業部 田中", "エンジニア部 山田"] 4 company_2 = ["エンジニアチーム 佐藤"] 5 company_3 = ["経理課 加藤", "人事課 鈴木"] 6 company_4 = ["営業担当 田山", "経理担当 伊藤","人事担当 鈴原","エンジニア担当 川山"] 7 companies = [company_1, company_2, company_3, company_4] 8 9 var spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/xxx"); 10 11 // spreadsheet_sheet_select 12 var sheet = spreadsheet.getActiveSheet(); 13 14 // spreadsheet_define_elements 15 sheet.appendRow(elements); 16 17 for (let i = 0; i < elements.length; i++) { 18 console.log(elements[i]); 19 for (let j = 0; j < 4; j ++) { 20 console.log(companies[j]); 21 for (let m = 0; m < companies[j].length; m ++ ) { 22 console.log(companies[j][m]) 23 if (companies[j][m].includes(elements[i])) { 24 console.log("true") 25 } else { 26 console.log("false") 27 } 28 } 29 } 30 } 31}
GAS
1elements = ["研究", "経理", "教授"] 2team_1 = ["研究代表 田中", "准教授 山田"] 3team_2 = ["研究係 佐藤", "経理係 鈴木"] 4team_3 = ["研究チーム 加藤", "経理チーム 吉田", "客員教授 山川"] 5 6以下私がスタックしてるコード①です。 7 for (let i = 0; i < elements.length; i++) { 8 if (company_i.indexOf(elements[i] != -1) { 9 console.log("true") 10 } else { 11 setvalue("null") 12 } 13 } 14 15以下私がスタックしてるコード②です。 16 // for (let i = 0, j = 0; j < elements.length; i++, j++) { 17 // if (company_i[i].includes(elements[j])) { 18 // console.log("true"); 19 // } else { 20 // setvalue("null"); 21 // } 22 // }

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