前提・実現したいこと
ドライブ上にあるCSVファイルを特定のスプレッドシートの特定のシートに書き込みしたいです。
かつ、CSVデータも特定の条件で抽出して書き込みたいです。
列A | 列B | 列C |
---|---|---|
くだもの | りんご | 100円 |
やさい | にんじん | 100円 |
くだもの | ぶどう | 200円 |
くだもの | いちご | 300円 |
やさい | キャベツ | 200円 |
やさい | なすび | 150円 |
さかな | さんま | 200円 |
こんな感じの「たべもの.csv」というファイルがドライブ上にあったとした場合、
列Aが「くだもの」のデータだけを特定のスプレッドシートに書き込みたいです。
該当のソースコード
//書き込む対象のSpread Sheetを定義 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("シート名"); function importData() { var folderId = "フォルダID"; var fileName = "たべもの.csv"; var files = DriveApp.getFolderById(folderId).getFiles(); while (files.hasNext()) { var file = files.next(); if (file.getName() == fileName) { var data = file.getBlob().getDataAsString("Shift_JIS"); var csv = Utilities.parseCsv(data); sh.getRange(1,1,csv.length,csv[0].length).setValues(csv); } } }
わからないこと
上記コードだと全件が抽出、書き込みされます。
どこで指定してあげるべきか、書き方などがわかりません・・・
クエリなどを使用するのでしょうか?
できれば1件ずつループしてif分で判断するよりかは
クエリなどで抽出できるならばそちらがありがたいです(件数が多いため)
実現可or不可もわからないため教えていただきたいです。
追加質問
列A | 列B | 列C | 列D | 列E |
---|---|---|---|---|
2018/09/02 | 101 | くだもの | りんご | 100円 |
2018/09/12 | 102 | やさい | にんじん | 100円 |
2018/10/31 | 101 | くだもの | ぶどう | 200円 |
2018/11/13 | 101 | くだもの | いちご | 300円 |
2018/11/30 | 102 | やさい | キャベツ | 200円 |
2018/12/02 | 102 | やさい | なすび | 150円 |
2018/12/24 | 103 | さかな | さんま | 200円 |
条件指定の際に、他のシートのセルから取得した日付、数値をキーに検索したいです。
他のシートのセルA1には2018年9月30日 セルA2には数値:101の情報が記載されています。
日付は月末日になっているのですが列Aが2018年9月分かつ列Bが101のデータを取得したいです。
下記のように101をセルから取得し、変数valueに格納、 変数valueを条件に指定してみましたがうまくいきませんでした。 ```ここに言語名を入力 //値セル var range = sh2.getRange("A2"); //値格納 var value = range.getValue();
また、日付の場合はセルから取得した年月のみで判定したいのですが
こちらの方法もわからない状況です。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー