如何使用GAS从cacheService中获取原始数组

时间:2014-07-01 14:19:26

标签: google-apps-script google-drive-api

我正在试验缓存。

我注意到如果你存储一个字符串数组,字符串将由komma分隔 我无法找到一种允许将数组作为数组检索的方法,只是因为字符串似乎是可能的 显然,如果数组元素包含komma,则通过拆分获得的字符串来检索数组将导致问题。如果存储书籍或报纸文章的标题等,就会发生这种情况。

function test()
{
   var delimiter = '\r\n';

   var xx = '';
   for (var i=0; i<10; i++) xx = xx + '_' + i;

   var numMax = 1024;

   var extra = ',';

   var string = [];
   var total = '';
   for (var i=0; i<numMax; i++)
   {
      string[i] = 'string[' + i + ']=' + i + extra + xx;
      total = total + string[i] + delimiter;
   }  

   total = total.substr(0, total.length - delimiter.length); // Remove the delimiter at the end of the string

   cacheScript.put('test_total', total);
   cacheScript.put('test_string', string);

   var test_total = cacheScript.get('test_total');
   Logger.log('test_total=\n' + test_total);

   var test_string = [];
   test_string = cacheScript.get('test_string'); // Will NOT retrieve an array but a string
   Logger.log('test_string=\n' + test_string); 

   var wrong = test_string.split(',');       // Will NOT retrieve the original array

   var right = test_total.split(delimiter);  // Will reproduce the original array
}

所以我想知道使用cacheService存储的数据是否可以恢复到原始数组中,而无需自己添加分隔符(例如&#39; total&#39;)或分割komma(例如&#39; test_string& #39;?)

1 个答案:

答案 0 :(得分:1)

您可以将join(delimiter)split(delimiter)的组合与任何“正常”字符串中永远不会出现的字符结合使用。

我通常使用|之类的内容,如下例所示

var array = ['any string,really any','test-any-chrs','56'];
var string = array.join('∏');
var recovered = string.split('∏');
Logger.log('array = '+array+'  length = '+array.length);
Logger.log('string = '+string);
Logger.log('recovered = '+recovered+'  length = '+ recovered.length);

enter image description here

另请注意,如果您想要更多严重,可以使用JavaScript方法:JSON.stringify(object)JSON.parse(string)