[12] 
[DFN[[[Google Apps Script]]]]
は
[CITE[[[Google Workspace]]]]
の[[マクロ]]機能です。

[13] 
[[JavaScript]] を採用しています。
[[言語]]の組み込み機能と独自の[[標準ライブラリー]]、
[CITE[[[Google Workspace]]]] 等 [[Google]] 製品用の
[[API]]
が使えます。

* 到達方法

[20] 
昔は[[スプレッドシート]]から
ツール → スクリプトエディター
で開けました。

[21] 
いつの間にか変わっていて
拡張機能 →
Apps Script
で開けます。わかりにくくなりましたね。
[TIME[2025-01-16T05:24:53.100Z]]

* 権限


[22] 
Apps Script から[[スプレッドシート]]にアクセスするためにもアクセス権限が必要です。
スクリプトエディターで実行するときに尋ねられるので承認してください。

[23] 
何かが変わったのか、何かのタイミングでリセットされたのかわかりませんが、
令和5年くらいに突然未承認状態になりました。


[24] >>15 の HTTP からの呼び出しも、突然未承認になって動作しなくなりました。
困るのは、動作失敗してるのに [CODE[200]] [[応答]]を返すっぽいところ。
エラーを検知できなくて酷い。


* 簡易 HTTP サーバー機能

[15] 
[CODE[doGet]] や [CODE[doPost]] のような [[JavaScript]] [[関数]]を書いて簡単に
[[HTTP]] [CODE[GET]] / [CODE[POST]] を受け付けることが出来ます。

[14] [CITE@ja-x-mtfrom-en[シンプルなトリガー | Apps Script | [[Google]] Developers]], [TIME[2022-07-30T00:51:54.000Z]], [TIME[2022-09-11T04:35:39.549Z]] <https://developers.google.com/apps-script/guides/triggers>


[3] 「公開」したはずの [[URL]] でなぜか「現在、ファイルを開くことができません。アドレスを確認して、もう一度試してください。」
(Sorry, unable to open the file at this time.)
というエラーになってうまく動かないときなどは、
[[URL]] から [CODE[/u/0]] のような部分を削ればいい (表示される URL がまちがってる) [SRC[>>6]]。

[6] [CITE[javascript - Google Drive Page Not Found - Sorry, unable to open the file at this time - Stack Overflow]] ([TIME[2017-11-02 12:00:54 +09:00]]) <https://stackoverflow.com/questions/47045209/google-drive-page-not-found-sorry-unable-to-open-the-file-at-this-time>


[4] 「公開」ではバージョンを選択できる。変更を保存しても前のバージョンが選ばれている「公開」
は前のままの動作をする。変更を反映したいときは毎回新しいバージョンを作ってそれを選んで「公開」
しないといけない。

[5] [CODE[GET]] での[[要求URL]]の長さには制限があるので、大きなデータを送りたいときは
[CODE[POST]] を使わないといけない。

[7] 一定時間で強制中断されます。

[8] 実行結果は直接[[応答]]で得られず、[[HTTPリダイレクト]]された先の [[URL]]
を [CODE[GET]] することで得られます。リダイレクト先は違う[[起源]]にあります。
[TIME[2018-01-02T07:24:07.200Z]]

[9] [[HTTPクライアント]]によってはリダイレクト先の取得で元の[[要求メソッド]]を引き継ぐために、
正しい結果を得られないことがあります。 [[Webブラウザー]]と同じようにリダイレクト後は常に
[CODE[GET]] を使わなければいけません。

* バイト列

[16] 
[[標準ライブラリー]]は[[バイト列]]を表す[[データ構造]] 
[DFN[[CODE[Byte[__&&]&&__]]]]
を使っています。

[17] これは[[バイト]]を表す[[整数]]の[[配列]]です。

[18] なぜか[[整数]]は[[8ビット符号''付き''整数]]です。
[[符号付き]]で誰が嬉しいのでしょうか?

[19] 
[[TypedArray]] がない時代から提供されているからこうなっているのでしょうが、
使いにくいのはどうにかならんのでしょうかねえ。

* メモ


[1] [CITE@ja[[[Google Apps Script]] — Google Developers]]
( ([TIME[2014-08-18 21:05:45 +09:00]] 版))
<https://developers.google.com/apps-script/?hl=ja>

[2] [[Google Spreadsheet]] も参照。


[10] 
エディターがくっそ使いにくいのどうにかならんもんか


[11] 変な補完するくらいならそういうの要らないし、
メソッドの使い方がでかでかと出てきて入力中の文字隠すの嫌がらせレベルだし。。。


