Cache

A reference to a particular cache.

This class allows you to insert, retrieve, and remove items from a cache. This can be
particularly useful when you want frequent access to an expensive or slow resource. For example,
say you have an RSS feed at example.com that takes 20 seconds to fetch, but you want to speed up
access on an average request.

```javascript
function getRssFeed() {
  const cache = CacheService.getScriptCache();
  const cached = cache.get('rss-feed-contents');
  if (cached != null) {
    return cached;
  }
  const result = UrlFetchApp.fetch(
      'http://example.com/my-slow-rss-feed.xml');  // takes 20 seconds
  const contents = result.getContentText();
  cache.put('rss-feed-contents', contents, 1500);  // cache for 25 minutes
  return contents;
}
```

You still need to wait the 20 seconds if the item is not in the cache, but subsequent calls
are very fast until the item expires out of the cache in 25 minutes.

### Methods

| Method | Return type | Brief description |
|---|---|---|
| `https://developers.google.com/apps-script/reference/cache/cache#get(String)` | `String|null` | Gets the cached value for the given key, or `null` if none is found. |
| `https://developers.google.com/apps-script/reference/cache/cache#getAll(String)` | `Object` | Returns a JavaScript Object containing all key/value pairs found in the cache for an array of keys. |
| `https://developers.google.com/apps-script/reference/cache/cache#put(String,String)` | `void` | Adds a key/value pair to the cache. |
| `https://developers.google.com/apps-script/reference/cache/cache#put(String,String,Integer)` | `void` | Adds a key/value pair to the cache, with an expiration time (in seconds). |
| `https://developers.google.com/apps-script/reference/cache/cache#putAll(Object)` | `void` | Adds a set of key/value pairs to the cache. |
| `https://developers.google.com/apps-script/reference/cache/cache#putAll(Object,Integer)` | `void` | Adds a set of key/value pairs to the cache, with an expiration time (in seconds). |
| `https://developers.google.com/apps-script/reference/cache/cache#remove(String)` | `void` | Removes an entry from the cache using the given key. |
| `https://developers.google.com/apps-script/reference/cache/cache#removeAll(String)` | `void` | Removes a set of entries from the cache. |

## Detailed documentation

### `get(key)`

Gets the cached value for the given key, or `null` if none is found.

```javascript
// Gets the value from the cache for the key 'foo'.
const value = CacheService.getScriptCache().get('foo');
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `key` | `String` | The key to look up in the cache. |

#### Return


`String|null` --- The cached value, or `null` if none was found.

*** ** * ** ***

### `getAll(keys)`

Returns a JavaScript Object containing all key/value pairs found in the cache for an array of
keys.

```javascript
// Gets a set of values from the cache
const values = CacheService.getDocumentCache().getAll(['foo', 'x', 'missing']);
// If there were values in the cache for 'foo' and 'x' but not 'missing', then
// 'values' is: {'foo': 'somevalue', 'x': 'othervalue'}
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `keys` | `String[]` | The keys to lookup. |

#### Return


`Object` --- A JavaScript Object containing the key/value pairs for all keys found in the cache.

#### See also

- `https://developers.google.com/apps-script/reference/cache/cache#get(String)`

*** ** * ** ***

### `put(key, value)`

Adds a key/value pair to the cache.

The maximum length of a key is 250 characters. The maximum amount of data that can be stored
per key is 100KB. The value expires from the cache after 600 seconds (10 minutes).

The cap for cached items is 1,000. If more than 1,000 items are written, the cache stores
the 900 items farthest from expiration. This limit might change.

```javascript
const cache = CacheService.getScriptCache();
// Puts the value 'bar' into the cache using the key 'foo'
cache.put('foo', 'bar');
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `key` | `String` | The key to store the value under. |
| `value` | `String` | The value to be cached. |

*** ** * ** ***

### `put(key, value, expirationInSeconds)`

Adds a key/value pair to the cache, with an expiration time (in seconds).

The maximum length of a key is 250 characters. The maximum amount of data that can be stored
per key is 100KB. The specified expiration time is only a suggestion; cached data may be
removed before this time if a lot of data is cached.

The cap for cached items is 1,000. If more than 1,000 items are written, the cache stores
the 900 items farthest from expiration. This limit might change.

```javascript
// Puts the value 'bar' into the cache using the key 'foo', but only for the
// next 20 seconds.
CacheService.getScriptCache().put('foo', 'bar', 20);
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `key` | `String` | The key to store the value under. |
| `value` | `String` | The value to be cached. |
| `expirationInSeconds` | `Integer` | The maximum time the value remains in the cache, in seconds. The minimum is 1 second and the maximum is 21600 seconds (6 hours). |

*** ** * ** ***

### `putAll(values)`

Adds a set of key/value pairs to the cache.

Similar to repeated calls to "put", but more efficient as it only makes one call to the
amount of data that can be stored per key is 100KB. The values expire from the cache after 600
seconds (10 minutes).

The cap for cached items is 1,000. If more than 1,000 items are written, the cache stores
the 900 items farthest from expiration. This limit might change.

```javascript
// Puts a set of values into the cache with the keys 'foo', 'x', and 'key'.
const values = {
  foo: 'bar',
  x: 'y',
  key: 'value',
};
CacheService.getUserCache().putAll(values);
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `values` | `Object` | A JavaScript Object containing string keys and values. |

#### See also

- `https://developers.google.com/apps-script/reference/cache/cache#put(String,String)`

*** ** * ** ***

### `putAll(values, expirationInSeconds)`

Adds a set of key/value pairs to the cache, with an expiration time (in seconds).

Similar to repeated calls to "put", but more efficient as it only makes one call to the
memcache server to set all values. The maximum length of a key is 250 characters. The maximum
amount of data that can be stored per key is 100KB. The specified expiration time is only a
suggestion; cached data may be removed before this time if a lot of data is cached.

The cap for cached items is 1,000. If more than 1,000 items are written, the cache stores
the 900 items farthest from expiration. This limit might change.

```javascript
// Puts a set of values into the cache with the keys 'foo', 'x', and 'key'.
const values = {
  foo: 'bar',
  x: 'y',
  key: 'value',
};
CacheService.getUserCache().putAll(values, 20);
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `values` | `Object` | A JavaScript Object containing string keys and values. |
| `expirationInSeconds` | `Integer` | The maximum time the value remains in the cache, in seconds The minimum allowed expiration is 1 second, and the maximum allowed expiration is 21600 seconds (6 hours). The default expiration is 600 seconds (10 minutes). |

#### See also

- `https://developers.google.com/apps-script/reference/cache/cache#put(String,String)`

*** ** * ** ***

### `remove(key)`

Removes an entry from the cache using the given key.

```javascript
// Removes any cache entries for 'foo'
CacheService.getUserCache().remove('foo');
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `key` | `String` | The key to remove from the cache. |

*** ** * ** ***

### `removeAll(keys)`

Removes a set of entries from the cache.

```javascript
// Removes entries from the cache with keys 'foo' and 'x'
CacheService.getDocumentCache().removeAll(['foo', 'x']);
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `keys` | `String[]` | The array of keys to remove. |