プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
GASでcsvを取り込む方法について
投稿日時: 23/02/26 15:26:33
投稿者: TATSUYA.ich

以下のコードでException: パラメータ(String,number)が SpreadsheetApp.Spreadsheet.getRange のメソッドのシグネチャと一致しません。のエラーが出ます。
 
Getrangeの部分でデータ型が違うというのが理由というのはわかるのですが、何度修正して試してみても同じエラーが出るので、何か改善策を教えていただけますと幸いです。
 
 
function importcsv(){
  //事前準備
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ui = SpreadsheetApp.getUi();
  
  //CSVファイル群が入っているフォルダのIDを取得
  var csvFolderkey = "〇〇";
 
  //Browser.msgBox(csvFolderkey);
 
  //特定のフォルダ内のCSVファイルを取得
 
  var files = DriveApp.getFolderById(csvFolderkey).getFilesByType(MimeType.CSV);
  var csvFile = "〇〇";
  var csvData;
  var sheetman = sheet.getSheetByName('〇〇');
   
  while (files.hasNext()) {
    //UTF-8にてCSVをそのままで取り込む
    csvFile = files.next().getBlob().getDataAsString("UTF-8");
     
    //CSVToArrayにて成形してシートに記述(書き込み先シートはtestという名称)
    csvData = Utilities.parseCsv(csvFile);
  
    //スプレッドシート書き込み用の配列
    var array = [];
  
    //ループで必要な列だけをtempArrayに取り込み
    for(var i = 4;i<csvData.length;i++){
      //一時処理用の配列を用意
      var tempArray = [];
  
      tempArray.push(csvData[i][1]);
      tempArray.push(csvData[i][11]);
      tempArray.push(csvData[i][22]);
      tempArray.push(csvData[i][23]);
      tempArray.push(csvData[i][25]);
      tempArray.push(csvData[i][26]);
      tempArray.push(csvData[i][27]);
      tempArray.push(csvData[i][28]);
      tempArray.push(csvData[i][38]);
      tempArray.push(csvData[i][45]);
  
      //書き込み用配列に押し込む
      array.push(tempArray);
    }
     
    //書込みをする
    var endrow = Number(sheetman.getLastRow()) + 1;
    var lastColumn = csvData[0].length;//カラムの数を取得する
    var lastRow = Number(csvData[0].length);//行の数を取得する
 
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,1).setValue(array[i][0]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,2).setValue(array[i][1]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,3).setValue(array[i][2]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,4).setValue(array[i][3]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,15).setValue(array[i][4]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,5).setValue(array[i][5]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,9).setValue(array[i][6]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,10).setValue(array[i][7]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,11).setValue(array[i][8]);
      }
      for (var i = 0; i < array.length; i++) {
        sheet.getRange(endrow + i,12).setValue(array[i][9]);
      }
 
  }
   
  ui.alert("CSVデータのインポートが完了しました。");
}

トピックに返信