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

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

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

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

Q&A

0回答

2328閲覧

【GAS】 HtmlServiceで多次元配列がエラーになる。

k-na

総合スコア33

Google Apps Script

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

0グッド

0クリップ

投稿2017/06/02 04:45

編集2017/06/02 07:51

GASを使った社内アプリケーションで、データ管理を行っています。
先月までまともに動いていましたが、今月初めからページを表示したときに真っ白になってしまい
エラーも表示されません。

コードが肥大化しているため、分解して調べたところ
どうやら配列alldataがうまく読み込めていませんでした。

alldataの中身はalldata[0][0][0]と3次の配列になっており、
alldata[0][0]まで指定すると読めますが、alldataですべてのデータを読めなくなっているみたいです。

Logger.log(alldata)で中をのぞくときちんと取れるのですが
なぜかそれをJson等で渡そうとすると真っ白に・・・。

量などで新たに制限がかかったか、情報をお持ちのかたはいらっしゃいませんでしょうか?

追記:
元データは300×60行のデータを1セットで4年分あります。
こちらを10×4の2年分にしたところ正常に動きました。

その後、元のデータに差し替えると同じ現象がおきましたので
データ容量が多い場合に処理ができなくなっているようです。
更新を繰り返すとちゃんと処理される場合もあるようなので、内部の処理が追い付いていない?

下記、該当部分のコードです。
Javascriptに受け渡して配列を使用しています。

〇コードjs
function doGet(){
var html = HtmlService.createTemplateFromFile('index.html');
return html.evaluate();
}

〇index.html

<!DOCTYPE html> <html> <head> <?//マスターシート指定 var id = '〇〇〇'; //データシートID var hiduke = new Date(); //今日の日付を取得 var year = hiduke.getFullYear(); //西暦を取得 var syear = 2016; "データ開始年" var alldata = []; //配列を作成 alldata[0] = []; //2次配列を作成 alldata[0][0] = []; //3次配列を作成 var lastlist = []; //配列を作成 年度ごとの配列の数 lastlist[0]で2014年を取得 var yearlist = []; var sheet = SpreadsheetApp.openById(id);
function sheetget(newyear){ //シート情報の読み込みファンクション年度を入れて動かす。 var sheets = sheet.getSheetByName(newyear); var data = sheets.getDataRange().getValues(); alldata[i-syear] = data;//2つめに取得した年度の2次配列を挿入 lastlist.push(data.length); yearlist.push(newyear); } for(var i=syear;i<=year;i++){ //2016年からスタート 年度を渡してシートゲットファンクションを動かすループ。 sheetget(i); } var yearlast = yearlist.length; //年度リストの数 var jsondata = JSON.stringify(alldata); Logger.log(alldata); output.append(alldata); ?> <base target="_top">
</head> <body> <script> var data = JSON.parse(<?=jsondata?>); ・ ・ ・ </script> </body> </html>

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問