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

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

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

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

Q&A

解決済

1回答

4548閲覧

GASでスプレッドシートの読み込み結果をキャッシュしたい

supereater712

総合スコア29

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

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

0グッド

1クリップ

投稿2019/02/19 01:09

編集2019/02/19 01:13

前提・実現したいこと

GASでLineBotを作っています。
スプレッドシートの内容を二次配列のままキャッシュしたいです。

該当のソースコード

function getsheet1(){ var cache = CacheService.getScriptCache(); cache.remove('Sheet'); //デバッグ用 var arrData = cache.get('Sheet'); if (arrData == null){ arrData = SpreadsheetApp.openById('XXXXXXXXX').getSheets()[3].getDataRange().getValues(); cache.put('Sheet', arrData, 60*10); } Logger.log(arrData); //[[あ, か], [い, き], [う, く], [え, け], [お, こ]] Logger.log(arrData[2][1]); //く Logger.log(cache.get('Sheet')); //あ,か,い,き,う,く,え,け,お,こ Logger.log(cache.get('Sheet')[2][1]); //undefined }

試したこと

2つ目のログ結果まで想定通りの二次配列でしたが、3つ目は文字列でした。
2次配列をキャッシュするために何ができるか、お願いします。
4つ目のログは3つ目のログの有無にかかわらずundefinedでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

CacheServiceは文字列として出し入れする必要があるため、次のような変更は如何でしょうか。

javascript

1function getsheet1(){ 2 var cache = CacheService.getScriptCache(); 3 cache.remove('Sheet'); //デバッグ用 4 var arrData = cache.get('Sheet'); 5 if (arrData == null){ 6 arrData = SpreadsheetApp.openById('XXXXXXXXX').getSheets()[3].getDataRange().getValues(); 7 cache.put('Sheet', JSON.stringify(arrData), 60*10); // 変更 8 } 9 Logger.log(arrData); //[[あ, か], [い, き], [う, く], [え, け], [お, こ]] 10 Logger.log(arrData[2][1]); //く 11 12 var val = JSON.parse(cache.get('Sheet')); // 追加 13 Logger.log(val); //[[あ, か], [い, き], [う, く], [え, け], [お, こ]] 14 Logger.log(val[2][1]); //く 15}

参考

投稿2019/02/19 01:53

編集2019/02/19 01:54
kisojin

総合スコア899

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

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

supereater712

2019/02/19 03:04

返信ありがとうございます。 こちらでも動きました! Json形式を使って形式の制約を回避するのは驚きでした。 勉強になります。ありがとうございます!
kisojin

2019/02/20 04:48

ご返事ありがとうございます。無事解決したとのこと、安心しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問