#GAS #Gmail #GoogleAppsScript #GoogleCalendar #GoogleSpreadSheet
#GAS #Gmail #GoogleAppsScript #GoogleCalendar #GoogleSpreadSheet
getRangeやsetValueで
下記エラーになる場合が。
Exception: Service Spreadsheets failed while accessing document with id ~
これは
・insertSheet
・insertRowBefore等で,
シートや行・列の挿入or削除の直後
セルへのアクセスが失敗する。
https://stackoverflow.com/a/68...
対策として,前後で
SpreadsheetApp.flush();
するとよい。
getRangeやsetValueで
下記エラーになる場合が。
Exception: Service Spreadsheets failed while accessing document with id ~
これは
・insertSheet
・insertRowBefore等で,
シートや行・列の挿入or削除の直後
セルへのアクセスが失敗する。
https://stackoverflow.com/a/68...
対策として,前後で
SpreadsheetApp.flush();
するとよい。
フィリピンの言語「ビコール語」(言語コードbik)
の翻訳について(2026年時点):
①
Google翻訳は翻訳可能
②
Googleスプレッドシートでセルに
=GOOGLETRANSLATE("こんにちは", "ja", "bik")
→エラーになる
③
GASのLanguageApp.translateも未対応
④
GASからGoogle Cloudの
Cloud Translation APIにアクセスすれば翻訳可能
https://docs.cloud.google.com/...
対応言語の一覧表
フィリピンの言語「ビコール語」(言語コードbik)
の翻訳について(2026年時点):
①
Google翻訳は翻訳可能
②
Googleスプレッドシートでセルに
=GOOGLETRANSLATE("こんにちは", "ja", "bik")
→エラーになる
③
GASのLanguageApp.translateも未対応
④
GASからGoogle Cloudの
Cloud Translation APIにアクセスすれば翻訳可能
https://docs.cloud.google.com/...
対応言語の一覧表
Google翻訳で使える言語でも,
GASのLanguageApp.translate関数では
使えない場合がある。
例:
フィリピンの言語「ビコール語」は
Google翻訳でbikという言語コードで使用可能。
しかし,LanguageApp.translate関数で
bikという言語コードは
2026年時点では下記エラーに。
Exception: Translation between the given languages is not currently supported.
Google翻訳で使える言語でも,
GASのLanguageApp.translate関数では
使えない場合がある。
例:
フィリピンの言語「ビコール語」は
Google翻訳でbikという言語コードで使用可能。
しかし,LanguageApp.translate関数で
bikという言語コードは
2026年時点では下記エラーに。
Exception: Translation between the given languages is not currently supported.
GASで翻訳の関数
LanguageApp.translate( "こんにちは。", "ja", "en" )
・1日およそ5千回呼び出せる。
(1時間で200回ぐらい)
・中国語のピンインのような,発音情報は取り出せない。
・第二・第三引数で
言語コードをtypoした場合,
下記の例外が発生する。
Exception: Invalid argument: target
たとえばベトナム語の言語コード"vi"を
"vt"と書いていた,とか。
GASで翻訳の関数
LanguageApp.translate( "こんにちは。", "ja", "en" )
・1日およそ5千回呼び出せる。
(1時間で200回ぐらい)
・中国語のピンインのような,発音情報は取り出せない。
・第二・第三引数で
言語コードをtypoした場合,
下記の例外が発生する。
Exception: Invalid argument: target
たとえばベトナム語の言語コード"vi"を
"vt"と書いていた,とか。
GASでは,Google翻訳の機能と連携し
関数で文章を翻訳できる。
LanguageApp.translate( "こんにちは。", "ja", "en" )
→出力結果は,"Hello." となる。
第二・第三引数では
ja(日本語)の文字列を
en(英語)に翻訳する,と指定している。
他に言語コードの例:
中国語・簡体字 zh-CN
ドイツ語 de
フランス語 fr
スペイン語 es
ポルトガル語 pt
ベトナム語 vi
タガログ語 tl
ラテン語 la
など。
GASでは,Google翻訳の機能と連携し
関数で文章を翻訳できる。
LanguageApp.translate( "こんにちは。", "ja", "en" )
→出力結果は,"Hello." となる。
第二・第三引数では
ja(日本語)の文字列を
en(英語)に翻訳する,と指定している。
他に言語コードの例:
中国語・簡体字 zh-CN
ドイツ語 de
フランス語 fr
スペイン語 es
ポルトガル語 pt
ベトナム語 vi
タガログ語 tl
ラテン語 la
など。
GASからBlueskyに自動つぶやきする際,
投稿本文にfacetsを楽に付与するには。
下記の汎用的なライブラリを使えばよい。
「facets付与の汎用的なライブラリ。GASでBlueskyにbot投稿する時に使える便利関数。ぴったり千行のサンプルコード」
https://qiita.com/rwanda_go_ta...
投稿したい文字列の内容を自動的に分析し,
リンクやタグの位置を認識して
facetsのJSONを付与する仕組み。
BlueskyFacetsGenerator というオブジェクトになっている。
GASからBlueskyに自動つぶやきする際,
投稿本文にfacetsを楽に付与するには。
下記の汎用的なライブラリを使えばよい。
「facets付与の汎用的なライブラリ。GASでBlueskyにbot投稿する時に使える便利関数。ぴったり千行のサンプルコード」
https://qiita.com/rwanda_go_ta...
投稿したい文字列の内容を自動的に分析し,
リンクやタグの位置を認識して
facetsのJSONを付与する仕組み。
BlueskyFacetsGenerator というオブジェクトになっている。
GASからBlueskyに自動つぶやきする際,
投稿本文に
・ハイパーリンク
・ハッシュタグ
・メンション文字列
を含めるには。
「たった450行で,Googleスプレッドシートから自動投稿する時のfacetsの使い方が分かる」 ※概念を理解するためのサンプル
https://qiita.com/rwanda_go_ta...
セッション作成後,投稿文字列を送信する際
文字列と一緒に
facets(ファセッツ,装飾情報)をJSON内で送ればよい。
文字列内で装飾したい位置を指定する。
GASからBlueskyに自動つぶやきする際,
投稿本文に
・ハイパーリンク
・ハッシュタグ
・メンション文字列
を含めるには。
「たった450行で,Googleスプレッドシートから自動投稿する時のfacetsの使い方が分かる」 ※概念を理解するためのサンプル
https://qiita.com/rwanda_go_ta...
セッション作成後,投稿文字列を送信する際
文字列と一緒に
facets(ファセッツ,装飾情報)をJSON内で送ればよい。
文字列内で装飾したい位置を指定する。
GASからBlueskyに自動つぶやきするには。
「たった100行で,Blueskyにbot投稿するGASサンプルコード
(GoogleスプレッドシートからブルースカイAPIを無料で使う方法を理解する)」
https://qiita.com/rwanda_go_ta...
UrlFetchApp.fetchを2回呼べばよい。
HTTP通信を2回するということ。
①まずセッション作成し,アクセストークンをもらう。
②次に投稿したい文字列を送信する。この際に①で取得したアクセストークンも同時に送る。
GASからBlueskyに自動つぶやきするには。
「たった100行で,Blueskyにbot投稿するGASサンプルコード
(GoogleスプレッドシートからブルースカイAPIを無料で使う方法を理解する)」
https://qiita.com/rwanda_go_ta...
UrlFetchApp.fetchを2回呼べばよい。
HTTP通信を2回するということ。
①まずセッション作成し,アクセストークンをもらう。
②次に投稿したい文字列を送信する。この際に①で取得したアクセストークンも同時に送る。
トリガ設定画面から
トリガを作成してあるとしよう。
その後,GASコード内で
UrlFetchAppを使用したいなと思って,
マニフェストファイル
(appsscript.json)を
編集したとする。
この場合,既存のトリガは動かなくなる。
そのトリガ設定を編集・更新してもダメ。
新たに別のトリガを作り直す必要がある。
つまり,「トリガの新規作成」という行為が
マニフェストファイルの権限読み込みと
密接に関わっていて切り離せない,ということ。
トリガ設定画面から
トリガを作成してあるとしよう。
その後,GASコード内で
UrlFetchAppを使用したいなと思って,
マニフェストファイル
(appsscript.json)を
編集したとする。
この場合,既存のトリガは動かなくなる。
そのトリガ設定を編集・更新してもダメ。
新たに別のトリガを作り直す必要がある。
つまり,「トリガの新規作成」という行為が
マニフェストファイルの権限読み込みと
密接に関わっていて切り離せない,ということ。
GASでUrlFetchAppを使用する際に
マニフェストファイルの編集が
必要なのはなぜか。
appsscript.json 内の
oauthScopes の欄は…
・GASスクリプトが
Google Workspaceや
外部サービスへアクセスする際の
権限範囲(スコープ)を
明示・制限するための設定項目。
・UrlFetchApp で外部APIと
通信する際などに権限追記するほか,
用途に応じて必要なスコープを指定する。
GASでUrlFetchAppを使用する際に
マニフェストファイルの編集が
必要なのはなぜか。
appsscript.json 内の
oauthScopes の欄は…
・GASスクリプトが
Google Workspaceや
外部サービスへアクセスする際の
権限範囲(スコープ)を
明示・制限するための設定項目。
・UrlFetchApp で外部APIと
通信する際などに権限追記するほか,
用途に応じて必要なスコープを指定する。
GASで外部リンクにアクセスするため
UrlFetchAppを使用するには。
GASエディタ上でマニフェストファイル
(appsscript.json)を開く。
"runtimeVersion": "V8"
という行がある。それを修正して
"runtimeVersion": "V8",
"oauthScopes": [
"https:// www.googleapis .com/auth/script.external_request"
]
として保存。(www. の前と .comの前のスペースは削除)
GASで外部リンクにアクセスするため
UrlFetchAppを使用するには。
GASエディタ上でマニフェストファイル
(appsscript.json)を開く。
"runtimeVersion": "V8"
という行がある。それを修正して
"runtimeVersion": "V8",
"oauthScopes": [
"https:// www.googleapis .com/auth/script.external_request"
]
として保存。(www. の前と .comの前のスペースは削除)
GASで特定の関数を使いたい場合,
「マニフェストファイル」 が必要になる事がある。
その表示手順:
①GASエディタの左側サイドメニューで
歯車アイコン(プロジェクトの設定)を押す。
②「全般設定」の中にある
『「appsscript.json」マニフェストファイルを
エディタで表示する』
というチェックボックスをON。
③エディタに戻る。
左側のファイル一覧に
appsscript.json が追加されている。
これがマニフェストファイル。
GASで特定の関数を使いたい場合,
「マニフェストファイル」 が必要になる事がある。
その表示手順:
①GASエディタの左側サイドメニューで
歯車アイコン(プロジェクトの設定)を押す。
②「全般設定」の中にある
『「appsscript.json」マニフェストファイルを
エディタで表示する』
というチェックボックスをON。
③エディタに戻る。
左側のファイル一覧に
appsscript.json が追加されている。
これがマニフェストファイル。
トリガ設定ダイアログ上の設定項目:
・「実行する関数を選択」
→ タイマー実行したい関数を選ぶ。
・「実行するデプロイを選択」
→ Head
・「イベントのソースを選択」
→ 時間主導型
・「時間ベースのトリガーのタイプを選択」
→ 分ベースのタイマーなど。
・「時間の間隔を選択(分)」
→ 15分おきなど。
・ダイアログ右上の「エラー通知設定」
→ 毎日通知を受け取る
トリガ設定ダイアログ上の設定項目:
・「実行する関数を選択」
→ タイマー実行したい関数を選ぶ。
・「実行するデプロイを選択」
→ Head
・「イベントのソースを選択」
→ 時間主導型
・「時間ベースのトリガーのタイプを選択」
→ 分ベースのタイマーなど。
・「時間の間隔を選択(分)」
→ 15分おきなど。
・ダイアログ右上の「エラー通知設定」
→ 毎日通知を受け取る
トリガー機能を使うと,
GAS上の特定の関数を
タイマーで定期的に呼び出して
繰り返し自動実行できる。
トリガの設定方法:
① GASエディタ上で,画面の左側の
目覚まし時計のアイコンをクリック。
トリガ一覧画面が開く。
② 右下の「トリガーを追加」を押し
トリガ内容の設定ダイアログを操作。
(実行したい関数を選んだりする)
③ ダイアログ右下の「保存」を押下すると
トリガが保存される。
トリガー機能を使うと,
GAS上の特定の関数を
タイマーで定期的に呼び出して
繰り返し自動実行できる。
トリガの設定方法:
① GASエディタ上で,画面の左側の
目覚まし時計のアイコンをクリック。
トリガ一覧画面が開く。
② 右下の「トリガーを追加」を押し
トリガ内容の設定ダイアログを操作。
(実行したい関数を選んだりする)
③ ダイアログ右下の「保存」を押下すると
トリガが保存される。
Date型データの文字列フォーマット方法
https://jp.tdsynnex.com/blog/g...
Utilities.formatDate(
new Date(),
"JST",
"yyyy-MM-dd (E) HH:mm:ss"
)
→ "2026-07-18 (Sat) 12:34:56"
GASでなく素のJSでも
( new Date() ).toLocaleString("ja-JP")
→ "2026/7/18 12:34:56"
Date型データの文字列フォーマット方法
https://jp.tdsynnex.com/blog/g...
Utilities.formatDate(
new Date(),
"JST",
"yyyy-MM-dd (E) HH:mm:ss"
)
→ "2026-07-18 (Sat) 12:34:56"
GASでなく素のJSでも
( new Date() ).toLocaleString("ja-JP")
→ "2026/7/18 12:34:56"
GmailApp.sendEmail でのメール送信
・1つのGmailアカウントあたり,全プロジェクトを合計して1日100通まで送信可能。
・1回のメール送信で複数のアドレスに送信した場合,宛先アドレスの個数の分だけメール送信回数が消費される。
https://auto-worker.com/blog/?...
GmailApp.sendEmail でのメール送信
・1つのGmailアカウントあたり,全プロジェクトを合計して1日100通まで送信可能。
・1回のメール送信で複数のアドレスに送信した場合,宛先アドレスの個数の分だけメール送信回数が消費される。
https://auto-worker.com/blog/?...
// メール送信
GmailApp.sendEmail(
"送信先メアド@メアド",
"メールの件名",
"メールの本文"
);
・初回実行時は権限確認のダイアログが表示される。
・第4引数には,CC, BCC, noReply, 送信者名などのオプションを指定可能。
https://tonari-it.com/gas-gmai...
// メール送信
GmailApp.sendEmail(
"送信先メアド@メアド",
"メールの件名",
"メールの本文"
);
・初回実行時は権限確認のダイアログが表示される。
・第4引数には,CC, BCC, noReply, 送信者名などのオプションを指定可能。
https://tonari-it.com/gas-gmai...