前提
ノンプログラマーのド素人です。
画像の通り、「_」より前の名前別でシートに自動でインポートさせたいです。
色々なサイトをググって、コードを借りて実装してみたのですが、安定して取り込みができません。
(想定外のシートに取り込まれたり、貼り付け先のシートにデータが入っていないと途中でストップしたり・・)
ド素人なため、どのコードがエラーの原因なのかがさっぱりわからないため、、何がいけないかを教えていただけないでしょうか。。
実現したいこと
- ドライブのフォルダにあるファイルをスプレッドシートに毎日自動でインポートしたい
- 同じシートの最終行へどんどん追加されていくようにしたい
- 自動でインポートされたものから、順次、使用済みフォルダへ移動させたい
発生している問題・エラーメッセージ
コードを修正して、実装してみました。
ファイルの移動はできたのですが、肝心のスプレッドシートへの転記が全く動きません。
データの取得からセットまでのコードの正解がわかりません。。
該当のソースコード
GAS
1function ABCファイル() { 2 3 const AAA = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('AAA'); 4 const BBB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('BBB'); 5 const CCC = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CCC'); 6 7 let row = 1; 8 9 //指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト) 10 const files = DriveApp.getFolderById('▲読み込み先フォルダID▲').getFiles(); 11 //使用済みフォルダ(上記フォルダ内) 12 const moveDir = DriveApp.getFolderById('▲移動先フォルダID▲'); 13 14 //正規表現で絞り込む 15 const AAAreg = /^AAA.*?$/; 16 const BBBreg = /^BBB.*?$/; 17 const CCCreg = /^CCC.*?$/; 18 19 while (files.hasNext()) { 20 21 const file = files.next(); 22 const filename = file.getName(); 23 console.log(filename); 24 25 const fileId = file.getId(); 26 const blob = DriveApp.getFileById(fileId).getBlob(); 27 const csv = blob.getDataAsString(); 28 const values = Utilities.parseCsv(csv); 29 values.shift(); 30 31 if (filename.match(AAAreg)) { //条件に合致するファイル名のみ書き込み 32 const lastRow= AAA.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); 33 AAA.getRange(lastRow, 1).setValue(values); 34 row++; 35 } 36 if (filename.match(BBBreg)) { //条件に合致するファイル名のみ書き込み 37 const lastRow= BBB.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); 38 BBB.getRange(lastRow, 1).setValue(values); 39 row++; 40 } 41 if (filename.match(CCCreg)) { //条件に合致するファイル名のみ書き込み 42 const lastRow= CCC.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); 43 CCC.getRange(lastRow, 1).setValue(values); 44 row++; 45 } 46 47 SpreadsheetApp.flush() 48 file.moveTo(moveDir);//使用済みフォルダに移動 49 } 50}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。