Bye Bye Moore

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

google

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…

Google Docにアドオンめいた機能をつくる

getUi関数をつかうと、開いているファイルに新規メニューを追加できます。 実際のところ 単純に追加するだけなら、こんな感じ。 function onOpen(e) { DocumentApp.getUi() .createMenu('My Menu') .addItem('My menu item', 'myFunction') .addSeparator() …

google docsの内容を編集する

google docsの内容はbodyという単位に放り込まれています。 これの子要素としてパラグラフやリスト、テーブルを追加するなどして対応します。 実際のところ //いまのドキュメントを読み込む var doc = DocumentApp.getActiveDocument(); //bodyを変数に格納 …

Google Docsの既存ファイルを開く

GASをつかうGoogle Docsの既存ファイルを開く * 実際のところ URLから var doc = DocumentApp.openByUrl( 'https://docs.google.com/document/d/1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3/edit'); IDなら // Open a document by ID. var doc = DocumentA…

GASでDocsの特定文字を変換する

今回はGAS自動化の中でもニーズが多そうなDocsの特定文字を変換する方法です。 実際のところ // 本文を記録 var body = DocumentApp.getActiveDocument().getBody(); //ターゲットを置換 body.replaceText('{name}', "木野修造");置換する数が多いなら、デー…

GASでDocsのレポートを作りメールでURLをおくる

実際のところ やりたい事はほぼそのまんま公式にありました。 function createAndSendDocument() { //新規にDocsファイル作成 var doc = DocumentApp.create('Hello, world!'); //タイムスタンプ用に時間を取得 var date = new Date(); //本文を追加 doc.get…

GASでファイルをつくる

Google Apps Scriptを経由するとGoogle Driveにファイルを保存したりもできます。 実際のところ 最低限の構成として、ファイルをつくる場合 function myFunction() { DriveApp.getRootFolder().createFile('New Text File.txt', 'Hello, world!'); } 初回実…

Google Apps Scriptをつかってみる

Google Driveを開き、新規作成を押します。 デフォの設定ならば、最初からAppsScriptが入っているはずなのでコレをクリック 作成すると、こんな塩梅でオンラインエディタになっています。 クラス名からメソッドの候補が出てきたりと、かなり現代的。 これを…

Google Driveと連携出来るJupyter Notebook、Google Colaboratory をつかう

Google Colaboratoryってブラウザ上でPython使えてすごい。いつの間にこんな機能がGoogle Driveに入っていたんだ……!ここまで環境の入り口が整備されてしまうと、興味あるのに手を出さない人間はただのサボり屋さんだとバレてしまってきついですね(自分 pic…

SPARKLINE関数でちっこいグラフをセル内につくる

SPARKLINE関数でちっこいグラフをセル内につくる関数です。 かるく視認したいとき何かには便利ですね。 実際のところ A列を日付、B列を金額としたデータがあるとき、 以下のような関数のとき =SPARKLINE(A2:B11)セル一個分の範囲にこんな図がでます 参考もと…

Google Spread Sheetのヘッダー・フッター印刷設定

Google Spread Sheetの印刷設定の中にはヘッダー・フッターを決めるやつもあります。 実際のところ デフォで用意されているのでもページ番号や日付、シート名なんかが使えます 個別に設定も可能で 自前の文字列、デフォより凝ったページ番号表記

Google Spread Sheetで改ページ設定

表計算ツールであれこれ作っていると、どうしても改ページしたくなる局面って出てきますよね。 Google Spread Sheetでも、Excelとはまた違った方法ですが改ページ設定が可能です。 実際のところ まず印刷設定。 右のメニューに「改ページ設定」があるのでク…

RANK関数で配列内でのデータ順位をみる

shuzo-kino.hateblo.jp では全体の%表示が得られましたが、RANK関数では順位が得られます。 同じ場合はタイ表記です。 実際のところ I列にデータがあって、それを行毎に参照したい場合はこんなかんじ。 三番目が昇順降順の設定で、0がデフォの降順、1が昇順…

PERCENTRANK関数で特定のデータ列における指定データの順位を得る

PERCENTRANK関数は特定のデータ列における指定データの順位を返す関数です パーセントというくらいなので、返り値は0~1の小数値です。 実際のところ C2~C8(7個)にあるデータにおいてC7の位置を返す関数は以下の通り。 サンプルデータでは0.667とでました。 =…

Google Docsの図形描画で作った成果物を画像やSVGに落とす

Google Docsn標準でついてる図形描画機能はプレゼンテーションツールのノリで 簡単な図形を作成できる優れものです。 綺麗にやりたいなら専用ツールを使ったほうがいいですが 身内向けの使い捨て資料にはやりすぎですね。 今回は、この図形ツールの結果を画…