質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

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

Q&A

0回答

296閲覧

データ分割処理(GAS、JSに強い方、お知恵をください)

reotantan

総合スコア295

Google Apps Script

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

0グッド

1クリップ

投稿2018/10/08 08:43

データ分割処理をしていますが、メインデータをほかのファイルに書き写す処理のfor文が回っておらず、困っております。

このスクリプトでなぜfor文が処理されていないのか先輩方から教えていただきたく、投稿いたしました。
またコード全体として、アルゴリズムの修正点などありましたら、ご教授ください。

よろしくお願いします。

function myFunction(input) { //スプレッドシートの取得 var ss=SpreadsheetApp.getActive(); //シートの取得 var sheet=ss.getSheets()[0]; //最後の列と分割単位の設定 var Lastcolumn=sheet.getLastColumn(); Logger.log("最後の列は"+Lastcolumn); var LastRow=sheet.getLastRow(); Logger.log("最後の行は"+LastRow); var Columnnumber=(Lastcolumn-1)/input; Logger.log("分割単位"+Lastcolumn); //ヘッダの取得 var header=sheet.getRange(1,1,1,Lastcolumn).getValues(); Logger.log("header"+header); //メインデータの取得 var mainData=sheet.getRange(2, 1,LastRow-1,Lastcolumn).getValues(); Logger.log("mainData"+mainData[0][0]); Logger.log("mainData"+mainData[0][1]); Logger.log("mainData"+mainData[1][0]); Logger.log("mainData"+mainData[1][1]); //データの論理スイッチ var Switch=0; // シートを作成 注意点:シートの数がいくつになるかはinputで決まるのでinputと同じ配列を用意してやる for(var i = 1; i <= 2; i++){ //新しいファイルを作成 var s=SpreadsheetApp.create("分割ファイル"+i); var newSheet=s.getSheets()[0]; //ヘッダーの値を入れる(for分で書き換える) newSheet.getRange(1,1).setValue(header[0][0]); newSheet.getRange(1,2).setValue(header[0][1]); //データは入る newSheet.getRange(2,1).setValue(mainData[0][0]); //ここまではOK //メインデータを入れる if(Switch===0){ for(var j=2;j<=Columnnumber+1;j++){ for(var k=1;k<=Lastcolumn;k++){ newSheet.getRange(j,k).setValue(mainData[j-2][k-1]); Logger.log("最初の処理"); } Switch++; } }else{ for(var j=2;j<=Columnnumber+1;j++){ for(var k=1;k<=Lastcolumn;k++){ newSheet.getRange(j,k).setValue(mainData[j][k-1]); Logger.log("最後の処理"); } } } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/10/09 03:48

「ここまではOK」まで動作確認済みだとすれば、なんとなくinputがundefinedだからっぽいのですが、このmyFunctionを、関数を実行、で実行していませんか?どうやって実行していますか?
reotantan

2018/10/09 12:36

関数を実行で実施しています。inputに値を渡す方法として、シートに=関数(インプット)を入力したのですが、うまくいきませんでした。
reotantan

2018/10/09 12:36

関数を実行で実施しています。inputに値を渡す方法として、シートに=関数(インプット)を入力したのですが、うまくいきませんでした。
papinianus

2018/10/09 23:25

上手くいかないとは具体的にはどうなりますか?そのときログは?
papinianus

2018/10/10 08:03

シートに`=myFunction(2)`とするとcreateを呼び出す権限がないというエラーになるため、{の直後くらいで、input=2;とかを挿入したところ正常に動作しました。このようにしてテストしていただけませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問