Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

google

GASのspreadsheet用独自関数をつくる

spreadsheetファイルに紐づいたgsファイル上で そのファイルでしか使わない独自関数を定義できます。 実際のところ 単純に、数値をぶち込むと+1してくれるような関数MYFUNCを考えます。 /** * わたしの素敵な関数 * * @param {number} 任意の数値 * @return …

二つ以上の値で小さい方を取得したい場合……素直にMIN関数をつかいましょう

考えてみれば当たり前だったのですが……なぜかハマったのでメモ。 二つ以上のパラメーターがあって、そのうちで小さい方を取得したい場合、MIN関数をつかいます。 ……そう、別に二個でも使っていいんですよ。 無駄にIF関数とか使わんでいいのです。 実際のとこ…

GASの開発をローカルでやる その6:デプロイしたファイルを引っ込める

実際のところ 一旦デプロイした"123"を引っ込める場合は $ clasp undeploy "123" 参考もと GitHub - google/clasp: 🔗 Develop Apps Script projects locally.

GASの開発をローカルでやる その5:gsファイルの関数をclaspから起動

実際のところ ”.clasp.json”にてプロジェクトIDを設定した状態で 開いているGSファイルの"sendEmail"関数を呼ぶ場合は以下のようにします。 clasp run 'sendEmail' 参考もと GitHub - google/clasp: 🔗 Develop Apps Script projects locally.

GASの開発をローカルでやる その4:同期

実際のところ ファイルIDが”yourscriptId”のとき、以下のようにします。 $ clasp clone yourscriptId 参考もと GitHub - google/clasp: 🔗 Develop Apps Script projects locally.

GASの開発をローカルでやる その3:デプロイ

GASはバージョン番号にて内容を巻き戻したりする事ができます。 claspにも、これに対応したコマンドがあります。 実際のところ バージョン3として、"foo bar."とコメントつきでデプロイする場合 $ clasp deploy 3 "foo bar." 参考もと GitHub - google/clasp…

GASの開発をローカルでやる その2:ファイルを作成する

shuzo-kino.hateblo.jp 実際のところ 名前が"My Script"、紐づけるドキュメントのIDが"YOUR_DOCUMENT_ID"のとき ファイルを作成するには以下のようにします。 $ clasp create "My Script" "YOUR_DOCUMENT_ID" 参考もと GitHub - google/clasp: Develop Apps…

GASの開発をローカルでやる その1:環境構築

GASはオンライン上で開発できるので便利な反面、 ネットが通じてないところでやるときや、バージョン管理を事細かにやりたいときには少し不便です。 今回はGoogle公式提供のCLASPというツールにて、これをローカルでやる方法をためしてみます。 実際の…

GASによるスプレッドシートの操作をすぐに反映する

GASで大量のセルをいじる場合、 パフォーマンス向上の都合で反映が遅れるケースがあります。 この際、編集キューを速攻で反映したい場合はflush関数を使います。 実際のところ for文などで大量のキューを生じさせたら、 末尾でflushを呼びます。 Spreadsheet…

GASでシートにあるメモ類を全部けす

編集しているときは大活躍、外に出すときには色々面倒なメモ機能。 今回は、GASでこいつを全消しする方法です 実際のところ シートにあるノートを全部消したい場合は シートのメソッドとして実行すれば一発で全部消してくれます。 function clrNt() { var ss…

GASで今みているGoogle SpreadSheetのシート名を取得する

実際のところ 基本は前回までの記事と同様。 code.gs code.gsの値変更を以下のようにいじります。 getName関数は文字列を返すので、加工も容易。 function changeVal(formObject){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheet…

Google SpreadSheetのデータ入力支援サイドバーをつくってみる その5:値を入力できるようにする

実際のところ page.html <html> <head> <base target="_top"> </head> <body> <p>Hello, world!</p> <hr/> <div id="output">none</div> <form id="myForm" onsubmit="handleFormSubmit(this)"> <input name="value" type="text" /> <input type="submit" value="Submit" /> </form> <hr/> </hr/></hr/></body></html>

Google SpreadSheetのデータ入力支援サイドバーをつくってみる その4:今度こそボタンで変えてみる

実際のところ code.gs こちらは「その3」と変わりません。 セルの値を変更する関数もそのまんま。 function onOpen() { //サイドメニュー表示 SpreadsheetApp.getUi() .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } f…

Google SpreadSheetのデータ入力支援サイドバーをつくってみる その3:イベントハンドラーを経由して値を変更

実際のところ code.gs function onOpen() { //サイドメニュー表示 SpreadsheetApp.getUi() .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function changeVal(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var…

Google SpreadSheetのデータ入力支援サイドバーをつくってみる その2:更新時に値を変更する

code.gs function onOpen() { //サイドメニュー表示 SpreadsheetApp.getUi() .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function changeVal(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var cell = ss.ge…

Google SpreadSheetのデータ入力支援サイドバーをつくってみる その1:とりあえずサイドバー

自社でオレオレ見積・請求書フォーマットをGoogle Sheet上で作って活用しています。 そこそこ手間が減らせているのですが、今のところ書類番号は手入力です。 今回はこれを社内ルールにしたがって宜しくやってくれるやつを考えてみます。 実際のところ ター…

GASのContentServiceで任意の型を返す その2:RSS / ATOM

一時に比べて大分大人しくはなったものの、 相変わらずRSS自体はとても便利なデータ型です。 GAS ではこのRSS / ATOMも返り値にできます 実際のところ RSSのとき function doGet() { var feed = "<tag>sample value</tag>"; return ContentService.createTextOutput(fee…

GASのContentServiceで任意の型を返す その1:JSON

function doGet(request) { var result = { available: request.parameters.val == 1 }; return ContentService.createTextOutput(JSON.stringify(result)) .setMimeType(ContentService.MimeType.JSON); } これでCurlで $ curl -L URL_OF_YOUR_SCRIPT?val=1…

GASのプロパティについて

GASにはパラメータを格納するプロパティという便利な箱があります。 あるユーザーは日本語モード、そちらのユーザーはヘブライ語といった感じの。種類はScript Properties、User Properties、Document Propertiesの三つがあり それぞれ用途が異なります。 実…

GASでBlobファイルを外部からもってくる

var url = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/220px-Google_2015_logo.svg.png" var response = UrlFetchApp.fetch(url); //Blobとして加工したいとき var resultBlon = response.getBlob(); //単に画像が欲…

GASのイベントトリガーをスクリプトから消す

実際のところ 以下の構文で現在開いて居るGASに使われて居るTriggerの配列が返ってきます。 var triggers = ScriptApp.getProjectTriggers();トリガーを消したい場合、いかのように一個一個バラしてScriptApp.delteTrigger関数で消します。 for (var i = 0; …

GASの時間トリガーをスクリプトから作成する

時間トリガーはUIからも作成できますが、 今回はスクリプトから作成してみます。 こうやると、まとめて作るときなんかで有利です。 実際のところ 平日の20時にトリガーを発生したい場合 以下のようにします。 function createTimeDrivenTriggers() { // 平日…

半端な金額を500円単位に丸める

実際のところ CEILINGは基準値をベースに切り捨て/切り上げを行います =CEILING('別のシート'!A1*1.33,500)他にもMROUNDというのも =MROUND('別のシート'!A1*1.33,500) 参考もと www.excel-list.com www.excel-list.com

G-suiteで編集等のイベントを元にアクションを起こさせる その2:Docs

G-suiteで編集等のイベントを元にアクションを起こさせる方法の2回目 今回はDocsです 実際のところ Docsの本体はeのsourceで読み出しできます。たとえば、読み出した瞬間タイトルを変更したい場合は以下の通り。 function onOpen(e) { var doc = e.source; d…

G-suiteで編集等のイベントを元にアクションを起こさせる

実際のところ セルが変更された場合にメモを残す関数は以下の通り。 function onEdit(e){ var range = e.range; range.setNote('最終編集日時: ' + new Date()); } これと、以前紹介のIFTTTのspread sheet編集機能を連動すると、 単体ではフォローできないよ…

IFTTTのGoogle SpreadSheetアクション その3:既存セルが更新されたらアクションをおこす

参考もと Do more with Google Sheets - IFTTT

IFTTTのGoogle SpreadSheetアクション その1:新規ROW

デフォではこんなの これを、こう書き換え 対象のシートをみると、こうなっています 参考もと https://ifttt-japan.club/knowledge/that/google-sheets

Google SheetとIFTTTを連動させる

まずはIFTTTでGoogle Sheetを有効に Do more with Google Sheets - IFTTTIFTTTのスマホアプリを導入し、 Button Widgetをチョイス アプリを選択し、歯車⚙アイコンの設定を選択 下の方にある、ADD こんな指示がでるので 言われた通りに設定 認証がでるので、…

GASの拡張をGoogle公式のCSSセットに合わせる

基本的には、Gsuiteさんで出してるCSSセットを読み込むだけ <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css"> 実際のところ <html> <head> <base target="_top"> <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css"> </head> </html></link>

GAS WEBアプリでスタイルシートやJavaScriptのファイルを分離する

GAS WEBアプリシリーズの続き 今回はスタイルシートやJavaScriptの内容を分離してみます。 実際のところ code.gs メイン処理。 最後の方にindludeという関数が追加されています。 こいつがメインのHTMLファイル内に他のHTMLファイルを展開する役割を担います…