質問編集履歴

2 追加質問

yskt

yskt score 5

2018/10/17 12:57  投稿

【Google apps script】CSVから特定のデータを抽出し、書き込みたい
### 前提・実現したいこと
ドライブ上にある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不可もわからないため教えていただきたいです。
### 追加質問
条件指定の際に、他のシートのセルから取得した数値(101などのコード)をキーに検索したいです。
|列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("A1");
var range = sh2.getRange("A2");
//値格納
var value = range.getValue();
```
上記のようにvalueにセルの値を格納しそちらを条件に設定してみたところ
動作しなくなりました。
また、日付の場合はセルから取得した年月のみで判定したいのですが
こちらの方法もわからない状況です。
よろしくお願いいたします。
  • Google Apps Script

    1330 questions

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

1 追加質問

yskt

yskt score 5

2018/10/17 11:49  投稿

【Google apps script】CSVから特定のデータを抽出し、書き込みたい
### 前提・実現したいこと
ドライブ上にある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不可もわからないため教えていただきたいです。
実現可or不可もわからないため教えていただきたいです。
### 追加質問
条件指定の際に、他のシートのセルから取得した数値(101などのコード)をキーに検索したいです。
```ここに言語名を入力
//値セル
var range = sh2.getRange("A1");
//値格納
var value = range.getValue();
```
上記のようにvalueにセルの値を格納しそちらを条件に設定してみたところ
動作しなくなりました。
  • Google Apps Script

    1330 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る