google

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ファイルを展開する役割を担います…

GAS WEBアプリにて既存のGoogle Spread Sheetからデータを読み出す

実際のところ Spread Sheetに 1,A,あ 2,B,い 3,C,う上記ファイルのidが'1234567890abcdefghijklmnopqrstuvwxyz'であるとき、 code.gsは function doGet() { var template = HtmlService.createTemplateFromFile('hello.html'); return template.evaluate().s…

GAS製WEBアプリが「「Index」という HTML ファイルは見つかりませんでした。」といって動かない場合、権限を更新してバージョンもあげる

GASのWEBアプリをアップしたのに、 「Index」という HTML ファイルは見つかりませんでした。(行 2、ファイル「コード」、プロジェクト「sample」) というエラーが出た場合…… 権限を変更してバージョンを新しくして保存しなおすのです 実際のところ

GASでデータを読むときは非同期にするのが良心的

shuzo-kino.hateblo.jp の続きです。 前回は簡単のためfor文でぶん回しましたが……公式のベストプラクティスによると、 こういう場合は非同期読み込みした方がいいようです。 実際のところ 前回のサンプルからhello.htmlのみいじります。WEBお作法にもれず、G…

GAS WEBアプリにて、テンプレートを用いてデータを流し込む

GAS WEBアプリにて、テンプレートを用いてデータを流し込む方法です。 これでG suiteのアプリデータと連動したり、表示するデータを予め生成できたりします。 実際のところ function doGet() { var template = HtmlService.createTemplateFromFile('hello.ht…

Apps ScriptをWEBアプリとして公開してみる

function doGet() { var template = HtmlService.createTemplateFromFile('index.html'); return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME); } HTMLファイルを作成 名前はindexとしてみましょう。 <html> <head> <base target="_top"> </head> <body> Yeah!! </body> </html>ウェブアプリケ…

HtmlTemplate

実際のところ 一旦変数tmpにHTMLテンプレートデータを打ち込むサンプルは以下の通り。 var template = HtmlService.createTemplate(''); template.foo = 'Hello World!'; var tmp = template.evaluate().getContent() 参考もと HTML Service: Templated HTML…

GASでGoogle Docファイルを開いた場合をトリガーにする

GASではDocファイル開放をトリガーにすることもできます。 実際のところ ファイル自身がひらかれたとき ScriptApp.newTrigger('myFunction') .forDocument(DocumentApp.getActiveDocument()) .onOpen() .create(); keyでの起動も可能。 別のファイルが開かれ…

GASスクリプトを指定時刻に実行する

GASは時刻や日時をトリガーにして実行させる方法があるのですが、 この設定はスクリプトで任意に実行可能です。 CRONみたいな使い方ができますね。 実際のところ 関数実行日の23時48分にお手製のmyFunction関数を実行する例は以下の通り。 function setTrigg…

【読書メモ】プログラマの数学

プログラマの数学作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2005/03/24メディア: 大型本購入: 41人 クリック: 707回この商品を含むブログ (392件) を見る数学ガールなどで有名な結城浩先生による、プログラマが使う数学的知識の読み…

GASでZIP圧縮

Google Apps Script上ではZIP圧縮も可能です。 ファイル数が多くて面倒な時なんかは重宝しそうですね。 実際のところ zip圧縮関数にはBlob形式のものを配列として渡してやればよいです。 /* blob作成。ここは各々方のお好みで */ var YOURDOMAIN = "YOURDOMA…

Google Apps Scriptの文字列フォーマット系関数

Google Apps Scriptにも文字列フォーマットの関数が用意されています。 実際の所 文字列を成型する場合はfomatString関数です。 構文はおなじみのsprintf。 Utilitiesの関数のため、書き方文字列自体は長くなってしまいますが……。 //同じ意味 var filename =…

Google DocsをPDFとWordにして出力しメールに添付する

Google DocsをPDFとWordにして出力しメールに添付する 実際のところ function myFunction() { //いまのドキュメントを読み込む var doc = DocumentApp.getActiveDocument(); var docid = DocumentApp.getActiveDocument().getId(); var file = DriveApp.getF…

Google DriveのファイルをGASで読み込む

実際のところ var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); これでfile変数にはファイルの情報が入るわけですが、取り出す際には型を気を付けないといけません。 getAs関数ではblob化されたファイルについて、画像かPDFの形で…

GASで作業ユーザーのメールアドレスを取得する

誰が作業しているか知っておきたい事もありますよね。 作業ログとか、あるいはFireBaseと連携するときの権限とか。 その場合、BaseにあるUserクラスを使います。 実際のところ 以下の例ではSessionに保存されているログインユーザーを文字列として取得します…

モーダル画面をHTML記法で

実際のところ var htmlOutput = HtmlService .createHtmlOutput('<p>A change of speed, a change of style...</p>') .setWidth(250) .setHeight(300); SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'My add-on'); 参考もと Class Ui | Apps Script | Go…

Google Docsで文字入力のポップアップを出す

実際のところ 前回と同様、メニューをつくって、 その子要素をクリックするとポップアップが出てくるような例を考えます。 function myFunction() { //いまのドキュメントを読み込む var doc = DocumentApp.getActiveDocument(); //bodyを変数に格納 var bod…