前提
スプレットシートにデータを書き込みたいがうまくできない
実現したいこと
受け取ったデータを
[0]はファイル名(SpreadSheet)
[1]はシート名
[2]は項目数(列数)
それ以降をスプレットシートに記入したい
発生している問題
ファイル名(SpreadSheet)とシート名
は変更出来たりしているが
[3]以降のデータがスプレットシートに記入出来ていない
該当のソースコード
function doPost(e){ var param = e.postData.getDataAsString();//データ取得 var ary = param.split(',');//取得データをカンマで区切ってaryに格納 var fileName = ary[0];//aryの最初はファイル名(SpreadSheet) var sheetName = ary[1];//次にシート名 var n_of_colms = ary[2];//次に項目数(列数) var folder = DriveApp.getFolderById('14DfoBAvskTqsK_J0Z7DgaXz_l7hnCLDZ');//作業フォルダは固定にする:ここにフォルダIDを記入 var SS_ID = SpreadsheetApp.create(fileName).getId();//ルートにファイル名fileNameで新規スプレッドシート作成 var SS = DriveApp.getFileById(SS_ID);// 新規作成スプレッドシートのIDを取得 var files = folder.getFilesByName(fileName);//作業フォルダ内にfileNameと同じ名前のスプレッドシートが存在するか? if (files.hasNext()) { SS_ID = files.next().getId();//存在する場合はIDをそのファイルに書き換え } else{ folder.addFile(SS);//存在しない場合はルートのファイルをコピー } DriveApp.getRootFolder().removeFile(SS);//ルートに作成したスプレッドシートは不要なので削除 var ary_length = ary.length; var n_of_data = Math.round((ary_length - 3) / n_of_colms); //データの行数(組数) var spreadsheet = SpreadsheetApp.openById(SS_ID);//あらためてSpreadSheetを開く var newSheet = spreadsheet.getSheetByName(sheetName);//同じシート名があるかチェック if(!newSheet){ newSheet= spreadsheet.insertSheet(sheetName,0);//シートがなければ新規作成 } newSheet.activate(); var columnA_Vals = newSheet.getRange('A:A').getValues(); var LastRow = columnA_Vals.filter(String).length; //空白を除き、入力済の行数を取得 var ary2 = [];//シートに書き込むための配列 for(var i=0;i<n_of_data;i++){ ary2[i] = []; //まず1次元の配列にして for(var j=0;j<n_of_colms;j++){ //その中にさらにデータを格納して2次元にする ary2[i][j]=ary[i*n_of_colms + j + 3];//ary[0]はファイル名、1はシート名、2は列数なので3を足している } } var newRange = newSheet.getRange(LastRow+1,1,n_of_data,n_of_colms);//入力済の次の行から、入力範囲を設定 newRange.setValues(ary2); //ary2の内容を一気に書き込み var graphRange = newSheet.getRange(1,1,LastRow+n_of_data,n_of_colms);//グラフ作成するデータの範囲 var oldCharts = newSheet.getCharts(); //シートにあるすべてのグラフ for (var i in oldCharts) {//グラフの数だけ繰り返す // シートからそのグラフを削除:古いグラフはすべて削除される sheet.removeChart(charts[i]); } var myChart = newSheet.newChart()// 最新のグラフの作成 .addRange(graphRange) .setChartType(Charts.ChartType.SCATTER) .setPosition(1,n_of_colms,50,200) .build(); newSheet.insertChart(myChart); }
試したこと
送信したデータは
”Filename, SheetnameC, 3,1, 10, 20, 2, 12, 28, 3, 20, 30”
だったのだが
var sheetName = ary[1];//次にシート名
の部分を
var sheetName = ary[8];//次にシート名
と変えるとシート名28という新しいシートがつくられたりしたのでデータはきちんと送れている気がします。

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