Memo/Google/Apps_Script
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
* GAS(Google Apps Script) [#t7310fcf]
-[[Google Apps Script | Google Developers:https://develop...
--JavaScriptベース。サーバサイドで実行される。
--Document, windowといったクライアントサイドのオブジェク...
-記事
-- [[GASを使ったスクレイピングの作成手順を紹介! | 株式会...
-- [[Google Apps Script× BigQuery × Googleスプレッドシー...
-- [[GASでローカルCSVを取り込み、スプレッドシートで請求書...
-- [[土日は通知されたくない! 平日・営業日だけ動く GAS (G...
-- [[Google Apps Scriptを使ってスプレッドシートをD3.jsで...
-- [[逆引きGoogle Apps Scriptリファレンス «:http://w...
-- [[GASでSpreadsheetを操作する自分的ベストプラクティス -...
--[[Google Apps ScriptでスプレッドシートからGoogleドキュ...
--[[Google Apps ScriptでGoogleドキュメントのスプレッドシ...
----
** 高速化 [#sd285f87]
記事:
- [[GAS高速化のススメ - Nealle Developer's Blog:https://n...
> シートへの読み書きを可能な限り一括で行うようにする
> 外部APIリクエストを並列する
> キャッシュの活用
> 擬似的な非同期処理を実装する
----
** スクリプトのロック処理/排他制御 [#u98fe0d0]
- [[Class Lock  |  Apps Script  |  Go...
----
** 日付と時刻 [#q19e7086]
- [[Date():https://developer.mozilla.org/ja/docs/Web/Java...
#geshi(javascript){{
const today = new Date();
const year = today.getFullYear(); // 2023
const month = today.getMonth()+1; // 2
const date = today.getDate(); // 1
const day = today.getDay(); // 3 (水曜日)
}}
- [[Utilities.formatDate():https://developers.google.com/...
-- "yyyy-MM-dd HH:mm:ss"のような書式文字列で日時を取得で...
----
** スプレッドシートのクリア [#z43145c6]
- [[clear():https://developers.google.com/apps-script/ref...
-- 値と書式両方削除
- [[clearContents():https://developers.google.com/apps-sc...
-- 値だけ削除
- [[clearFormats():https://developers.google.com/apps-scr...
-- 書式だけ削除
----
** テキストファイルで改行コードを指定して保存 [#p6cde229]
- shell scriptとして保存したい場合、改行コードをLFにした...
- エクスポートでTSVとして保存すると、改行コードがCRLF、カ...
#geshi(javascript){{{
function main(){
sheet = SpreadsheetApp.getActive();
let file_name = getFileName(sheet, '.sh')
createTextFile(out_sheet, file_name)
}
function createTextFile(sheet, file_name, newline_code = ...
const text = getText(sheet);
var blob = Utilities.newBlob(text, 'text/plain', file_n...
var folder = getParentFolder();
folder.createFile(blob);
}
function getText(sheet, newline_code = '\n') {
const values = sheet.getDataRange().getValues();
var data = [];
for(let i = 0; i < values.length; i++) {
let line = values[i].join(' ').trim()
data.push(line);
}
return data.join(newline_code);
}
function getFileName(sheet, ext = '.txt', timeformat= 'yy...
var sheetName = sheet.getName()
var datetime = Utilities.formatDate(new Date(), timezon...
return sheetName + '_' + datetime + ext;
}
function getParentFolder() {
let thisFileId = SpreadsheetApp.getActive().getId();
let thisFile = DriveApp.getFileById(thisFileId);
let parentFolder = thisFile.getParents().next();
return parentFolder;
}
}}}
----
** メール送信 [#v5f53ddc]
記事:
- [[[GASで無料でやる]送付先ごとに別ファイルを添付...
----
** AWSとの連携 [#h4baacd3]
記事:
- [[Google スプレッドシートの表をS3へJSONファイルとして保...
----
** ライブラリ: 一つのGASを複数のスプレッドシート等で使う ...
共通化したいGASファイル:
- 新規 > その他 > Google Apps Script。専用フォルダ(例:gas...
- ファイル名がクラス名?になる。「-」等は省略されるので、...
- 他から利用するために、バージョンを保存する必要がある。...
-- ファイル > 版を管理 > 説明を記入 > Save new version
- 他から利用するために、スクリプトIDをコピー
-- ファイル > オブジェクトのプロパティ > スクリプト IDを...
GASを利用したいスプレッドシート側:
- ツール > スクリプトエディタ を開く
- リソース > ライブラリ > Add a library でスクリプトIDを...
- バージョンは最新、Identiferはクラス名?なので重複しない...
- スクリプトエディタ側では、「Identifer.funcion()」で呼び...
GASを更新する場合:
- GAS側で新しいバージョンを保存
- 利用側で新しいバージョンを指定
- 記事
-- [[1つのGASを複数のスプレッドシートで利用する方法(Goog...
----
** ベストプラクティス [#ufcf0fdc]
- [[Best Practices  |  Apps Script  | ...
----
** コーディング規約/ガイドライン [#v52150c3]
- [[Overview of Google Apps Script  |  Google D...
- 記事
-- [[Google Apps Scriptコーディングガイドライン【随時更新...
----
** GitHub連携 [#g84c1870]
- 記事
-- [[Googleスプレッドシートからgithub issueを簡単に作成し...
----
**clasp: cliでソースコードを扱う [#p338cbae]
デフォルトではweb上エディタ上を使うが、gitや任意のエディ...
-https://github.com/google/clasp
--node.js製
-記事
-- [[GAS用のCLIツール clasp を使ってGASをローカルで開発し...
-- [[clasp + GitHub + CodeBuild で Google Apps Script の...
-- [[claspを使ったGoogle Apps Scriptのソース管理を試して...
--[[Google Apps ScriptをTypeScriptで実装する(clasp/TSLint...
--[[Google Apps ScriptとclaspでBacklogの情報をGoogleスプ...
--[[Google Apps Script をローカル環境で快適に開発するため...
--[[5分で作るclaspを使ったGoogle Apps Scriptの開発環境 - ...
--[[Google Apps ScriptsでTypescriptが超簡単に使えるように...
+Googleアカウントの[[Google Apps Script API:https://scrip...
+ node.js製ツールなので、[[Memo/Linux/anyenv#ide22883]] ...
+ claspのインストール
#geshi(bash){{
npm install -g @google/clasp
# shellの再起動。claspが見つからない場合があった
exec $SHELL -l
}}
+ 表示されたURLを使いたいGoogleアカウントにサインインした...
#geshi(bash){{
clasp login
}}
----
**サンプル: GET/POSTを表示する [#s2316dea]
#geshi(javascript){{
function doGet(e) {
return HtmlService.createHtmlOutput(JSON.stringify(e));
}
function doPost(e) {
return ContentService.createTextOutput(e.postData.getDa...
}
}}
- /dev/path1/path2/?key1=val1 でアクセスした場合の結果
#geshi(javascript){{
{
"parameter":{
"key1":"val1"
},
"contextPath":"",
"contentLength":-1,
"queryString":"key1=val1",
"parameters":{
"key1":[
"val1"
]
},
"pathInfo":"path1/path2/"
}
}}
----
**デプロイ [#n19ac1c7]
devとprod用の異なるURLがある。~
1度発行されたURLはコードを変えても変わらない
dev用:
+ コードを変更する
+ 公開 > ウェブアプリケーションとして導入 > 最新のコード...
+ https://script.google.com/macros/s/{dev用token}/dev
prod用:
+ コードを変更する
+ ファイル > 版の管理 > 新しいバージョンを保存
+ 公開 > ウェブアプリケーションとして導入 > プロジェクト...
+ 現在のウェブ アプリケーションのURL
+ https://script.google.com/macros/s/{prod用token}/exec
----
**Logging [#vaba453e]
- Logger.log()
-- 表示 > ログに出る。
-- doPost(), doGet(), 各トリガーで起動する場合は、Logger....
- [[Logging  |  Apps Script  |  Googl...
-- 表示 > Stackdriver Logging , Stackdriver Error Reporti...
-- console.log() が使える
-スプレッドシートにログを出力する
-記事
--[[GAS と Stackdriver(Logging, Error Reporting) を連携さ...
--[[GoogleAppsScriptでdoPost()等でログが使えないときの代...
----
**GoogleフォームとSlack連携 [#i1351e30]
-記事
-- [[Googleカレンダの予定開始3分前になったら、予定開始ま...
--[[Googleフォームで作った申請フォームからSlackに通知をす...
--[[Googleフォームの回答をGoogle Apps ScriptでSlackに通知...
終了行:
#contents
* GAS(Google Apps Script) [#t7310fcf]
-[[Google Apps Script | Google Developers:https://develop...
--JavaScriptベース。サーバサイドで実行される。
--Document, windowといったクライアントサイドのオブジェク...
-記事
-- [[GASを使ったスクレイピングの作成手順を紹介! | 株式会...
-- [[Google Apps Script× BigQuery × Googleスプレッドシー...
-- [[GASでローカルCSVを取り込み、スプレッドシートで請求書...
-- [[土日は通知されたくない! 平日・営業日だけ動く GAS (G...
-- [[Google Apps Scriptを使ってスプレッドシートをD3.jsで...
-- [[逆引きGoogle Apps Scriptリファレンス «:http://w...
-- [[GASでSpreadsheetを操作する自分的ベストプラクティス -...
--[[Google Apps ScriptでスプレッドシートからGoogleドキュ...
--[[Google Apps ScriptでGoogleドキュメントのスプレッドシ...
----
** 高速化 [#sd285f87]
記事:
- [[GAS高速化のススメ - Nealle Developer's Blog:https://n...
> シートへの読み書きを可能な限り一括で行うようにする
> 外部APIリクエストを並列する
> キャッシュの活用
> 擬似的な非同期処理を実装する
----
** スクリプトのロック処理/排他制御 [#u98fe0d0]
- [[Class Lock  |  Apps Script  |  Go...
----
** 日付と時刻 [#q19e7086]
- [[Date():https://developer.mozilla.org/ja/docs/Web/Java...
#geshi(javascript){{
const today = new Date();
const year = today.getFullYear(); // 2023
const month = today.getMonth()+1; // 2
const date = today.getDate(); // 1
const day = today.getDay(); // 3 (水曜日)
}}
- [[Utilities.formatDate():https://developers.google.com/...
-- "yyyy-MM-dd HH:mm:ss"のような書式文字列で日時を取得で...
----
** スプレッドシートのクリア [#z43145c6]
- [[clear():https://developers.google.com/apps-script/ref...
-- 値と書式両方削除
- [[clearContents():https://developers.google.com/apps-sc...
-- 値だけ削除
- [[clearFormats():https://developers.google.com/apps-scr...
-- 書式だけ削除
----
** テキストファイルで改行コードを指定して保存 [#p6cde229]
- shell scriptとして保存したい場合、改行コードをLFにした...
- エクスポートでTSVとして保存すると、改行コードがCRLF、カ...
#geshi(javascript){{{
function main(){
sheet = SpreadsheetApp.getActive();
let file_name = getFileName(sheet, '.sh')
createTextFile(out_sheet, file_name)
}
function createTextFile(sheet, file_name, newline_code = ...
const text = getText(sheet);
var blob = Utilities.newBlob(text, 'text/plain', file_n...
var folder = getParentFolder();
folder.createFile(blob);
}
function getText(sheet, newline_code = '\n') {
const values = sheet.getDataRange().getValues();
var data = [];
for(let i = 0; i < values.length; i++) {
let line = values[i].join(' ').trim()
data.push(line);
}
return data.join(newline_code);
}
function getFileName(sheet, ext = '.txt', timeformat= 'yy...
var sheetName = sheet.getName()
var datetime = Utilities.formatDate(new Date(), timezon...
return sheetName + '_' + datetime + ext;
}
function getParentFolder() {
let thisFileId = SpreadsheetApp.getActive().getId();
let thisFile = DriveApp.getFileById(thisFileId);
let parentFolder = thisFile.getParents().next();
return parentFolder;
}
}}}
----
** メール送信 [#v5f53ddc]
記事:
- [[[GASで無料でやる]送付先ごとに別ファイルを添付...
----
** AWSとの連携 [#h4baacd3]
記事:
- [[Google スプレッドシートの表をS3へJSONファイルとして保...
----
** ライブラリ: 一つのGASを複数のスプレッドシート等で使う ...
共通化したいGASファイル:
- 新規 > その他 > Google Apps Script。専用フォルダ(例:gas...
- ファイル名がクラス名?になる。「-」等は省略されるので、...
- 他から利用するために、バージョンを保存する必要がある。...
-- ファイル > 版を管理 > 説明を記入 > Save new version
- 他から利用するために、スクリプトIDをコピー
-- ファイル > オブジェクトのプロパティ > スクリプト IDを...
GASを利用したいスプレッドシート側:
- ツール > スクリプトエディタ を開く
- リソース > ライブラリ > Add a library でスクリプトIDを...
- バージョンは最新、Identiferはクラス名?なので重複しない...
- スクリプトエディタ側では、「Identifer.funcion()」で呼び...
GASを更新する場合:
- GAS側で新しいバージョンを保存
- 利用側で新しいバージョンを指定
- 記事
-- [[1つのGASを複数のスプレッドシートで利用する方法(Goog...
----
** ベストプラクティス [#ufcf0fdc]
- [[Best Practices  |  Apps Script  | ...
----
** コーディング規約/ガイドライン [#v52150c3]
- [[Overview of Google Apps Script  |  Google D...
- 記事
-- [[Google Apps Scriptコーディングガイドライン【随時更新...
----
** GitHub連携 [#g84c1870]
- 記事
-- [[Googleスプレッドシートからgithub issueを簡単に作成し...
----
**clasp: cliでソースコードを扱う [#p338cbae]
デフォルトではweb上エディタ上を使うが、gitや任意のエディ...
-https://github.com/google/clasp
--node.js製
-記事
-- [[GAS用のCLIツール clasp を使ってGASをローカルで開発し...
-- [[clasp + GitHub + CodeBuild で Google Apps Script の...
-- [[claspを使ったGoogle Apps Scriptのソース管理を試して...
--[[Google Apps ScriptをTypeScriptで実装する(clasp/TSLint...
--[[Google Apps ScriptとclaspでBacklogの情報をGoogleスプ...
--[[Google Apps Script をローカル環境で快適に開発するため...
--[[5分で作るclaspを使ったGoogle Apps Scriptの開発環境 - ...
--[[Google Apps ScriptsでTypescriptが超簡単に使えるように...
+Googleアカウントの[[Google Apps Script API:https://scrip...
+ node.js製ツールなので、[[Memo/Linux/anyenv#ide22883]] ...
+ claspのインストール
#geshi(bash){{
npm install -g @google/clasp
# shellの再起動。claspが見つからない場合があった
exec $SHELL -l
}}
+ 表示されたURLを使いたいGoogleアカウントにサインインした...
#geshi(bash){{
clasp login
}}
----
**サンプル: GET/POSTを表示する [#s2316dea]
#geshi(javascript){{
function doGet(e) {
return HtmlService.createHtmlOutput(JSON.stringify(e));
}
function doPost(e) {
return ContentService.createTextOutput(e.postData.getDa...
}
}}
- /dev/path1/path2/?key1=val1 でアクセスした場合の結果
#geshi(javascript){{
{
"parameter":{
"key1":"val1"
},
"contextPath":"",
"contentLength":-1,
"queryString":"key1=val1",
"parameters":{
"key1":[
"val1"
]
},
"pathInfo":"path1/path2/"
}
}}
----
**デプロイ [#n19ac1c7]
devとprod用の異なるURLがある。~
1度発行されたURLはコードを変えても変わらない
dev用:
+ コードを変更する
+ 公開 > ウェブアプリケーションとして導入 > 最新のコード...
+ https://script.google.com/macros/s/{dev用token}/dev
prod用:
+ コードを変更する
+ ファイル > 版の管理 > 新しいバージョンを保存
+ 公開 > ウェブアプリケーションとして導入 > プロジェクト...
+ 現在のウェブ アプリケーションのURL
+ https://script.google.com/macros/s/{prod用token}/exec
----
**Logging [#vaba453e]
- Logger.log()
-- 表示 > ログに出る。
-- doPost(), doGet(), 各トリガーで起動する場合は、Logger....
- [[Logging  |  Apps Script  |  Googl...
-- 表示 > Stackdriver Logging , Stackdriver Error Reporti...
-- console.log() が使える
-スプレッドシートにログを出力する
-記事
--[[GAS と Stackdriver(Logging, Error Reporting) を連携さ...
--[[GoogleAppsScriptでdoPost()等でログが使えないときの代...
----
**GoogleフォームとSlack連携 [#i1351e30]
-記事
-- [[Googleカレンダの予定開始3分前になったら、予定開始ま...
--[[Googleフォームで作った申請フォームからSlackに通知をす...
--[[Googleフォームの回答をGoogle Apps ScriptでSlackに通知...
ページ名: