マガジンのカバー画像

へっぽこ学習記録

183
運営しているクリエイター

#GAS

【GAS】HTMLサービスを使ってクリックできるURLを表示したり、非同期処理問題をなんとかする

【GAS】HTMLサービスを使ってクリックできるURLを表示したり、非同期処理問題をなんとかする


やりたいこと①:スプレッドシートの「入力用」シートに入力した情報を、「出力用」シートに転記・整形して、出力用シートをPDFとして書き出すという処理をボタン一つでやりたい。
②:①で書き出してドライブに保存したPDFのURLを画面上に表示し、クリックで表示できるようにしたい

問題点①

転記・整形する処理とPDF書き出し処理を別のfunctionとして記述すると(おそらく)処理スレッドが分かれて

もっとみる
【GAS】セルから取得したDate型の日付をStringにフォーマットする

【GAS】セルから取得したDate型の日付をStringにフォーマットする

セルに入力した日付を取得すると、Date型になってしまっているので、必要に応じてフォーマットします。

結論function Date型をStringにフォーマット(値){ // Date型かどうかを確認 if(Object.prototype.toString.call(値) != "[object Date]"){ throw Error("引数はDate型で渡してく

もっとみる
【GAS】APIを叩いてPOSTでJSONを送信したり、その通信をPostmanでエミュレートしてみたり

【GAS】APIを叩いてPOSTでJSONを送信したり、その通信をPostmanでエミュレートしてみたり

GASからAPIのエンドポイントへアクセスして、POSTで情報送信出来るようにしたいの巻きです。

結論// データベース登録用会員データ.gs// sampleclass 会員データ{ constructor(名前, 電話番号, メールアドレス){ this.name = 名前; this.tel = 電話番号; this.mail = メールアドレス; } JSONとし

もっとみる
【GAS】VLOOKUPみたいなことをfindを使って華麗にやる

【GAS】VLOOKUPみたいなことをfindを使って華麗にやる

VLOOKUPがそのままGAS上でも使えれば何も問題ないんですが

結論function lookup(target_code){ // A列に商品名、B列に商品コードが入っているものとする const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const vals = sheet.getDataRange

もっとみる

【GAS】map関数を使って、一列分のデータだけを華麗に取得する

やりたいことスプレッドシート上にあれこれ展開した情報のうち、1列だけ、例えば計算結果のC列だけ、ごっそり配列として取得したいんじゃよ、っていうときに、forだのなんだのごにょごにょ書くのめーんどーくさーい。

結論const CODE_COL = 0 // 取得したい列番号let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveShee

もっとみる
【GAS】セルに入力したら発火する関数を使って簡易スマホアプリ作り

【GAS】セルに入力したら発火する関数を使って簡易スマホアプリ作り

SpreadsheetにGASを仕込んで、発火のためのボタンを作っても、PCから開いた時しか押せない問題。

でも出先でスマホでささっと動かしたい時もあるじゃん~
という時は、「セルに入力したら発火する」というトリガーを使うと良いと聞いたのでそれでアプリを作って見ます。

今回作るのは最高に単純なお小遣い帳……というか、「今月いくら使ったよ帳」です。使った金額を入力すると、今月いくら使ったかを計算

もっとみる
【GAS】Spreadsheetに設置したボタンを押したらメールを送る

【GAS】Spreadsheetに設置したボタンを押したらメールを送る

「今日発注ありますか」みたいな定形文の連絡を、決まった相手に、必要な時にだけボタンひとつで送る仕組みを作ります。
そんなのいつ使うんだ、と思われるでしょうが、今の私には必要なんだよ。

結論function send_mail(address, subject, body){ let options = {"from": "送信元メールアドレス"} GmailApp.sendEmail(rec

もっとみる
【GAS】一行目に数式を入れてオートフィルする

【GAS】一行目に数式を入れてオートフィルする

結論// 出力用のシートを取得しておくconst activeSheet = SpreadsheetApp.getActiveSpreadsheet();const sheet_b = activeSheet.getSheetByName("シートB")// 入力値を受け取る let start_num = Number(Browser.inputBox("開始番号を入力してください"));

もっとみる
【GAS】ファイルを開いたときにスクリプトを実行してメニューを追加する

【GAS】ファイルを開いたときにスクリプトを実行してメニューを追加する

GASの発火方法はいくつかありますが、一番オーソドックスなのは「ボタンを押したら発火させる」だと思います。ただ、今回「色々入力して仕上がった書類を出力するボタン」が欲しいんですが、うまいことボタンを置く場所が確保できないので、上部のメニューに追加しちゃいたいと思います。

function onOpen() { let ui = SpreadsheetApp.getUi(); let my_men

もっとみる
【GAS】表示中のシートをPDFに出力する

【GAS】表示中のシートをPDFに出力する

実はSpreadSheetは、仕様に則って生成したURLにアクセスするだけでPDFとして出力できちゃうんですよ。便利ですね。その仕組みを使ってPDFを出力します。

Blob(一時ファイルみたいなもの)を作る

function createPdf(target_sheet, filename){ // 各種idとトークンを取得 let spreadsheet_id = SpreadsheetAp

もっとみる
GASを使ってgmailの特定のラベルが付いたメールを定期削除する

GASを使ってgmailの特定のラベルが付いたメールを定期削除する

もうね、ココを見て下さい、で全て終わりなんですけども(素敵な記事をありがとうございます)。自分でやってみた雑感とかコツとかのメモをチョコチョコと。

googleさんの容量制限がちょいと厳しくなってきたじゃないですか。なんで、今まで無尽蔵に保存していたメルマガとかメルマガとかメルマガとか諸々の通知メールとか、その辺をごっそり消そうと思ったんですが手作業でやるの死ぬほど面倒だったので、自動化しちまえ

もっとみる

【GAS】全部の行に数式を入れたい。あるいはjavascriptでreplaceAllのはなし。

【やりたいこと】

データベースから複数行に渡る情報を持ってきて、スプレッドシート上に展開しつつ、その行に計算式も入れて計算結果を表示したい。(単価と個数はDBから取ってきて、合計金額だけスプレッドシートで計算したい)

【結論】

let data = [ ["りんご",10,100], ["みかん",5,80], ["なし",20,200],]let fx = "= Bn *

もっとみる

【GAS】SpreadSheetやっててconstconstconstconstウワーーーってなったときにこうしたら良いんじゃないかと言う【javascript】

SS上に展開したいヘッダー情報、DB上に存在するフィールド名情報、それぞれのSS上の座標情報、全部constconstconstってやってってウワーーーーってなったので、未来の自分のために知見をまとめておくから次のプロジェクトはこれに則って作るように。

まずはDBに登録するときのフィールド名を絶対基準にして定数化。

const PRICE = "price"const TAX = "tax"c

もっとみる

【GAS】スプレッドシートの見出し行の値をプログラムから入れたり、その値に1から順番を振ってコードを見やすくしたりなんだりする【javascript】

【やりたいこと】
見出し行に入力するヘッダーと、「どの値がどの行に入っているか」の情報を有機的に変更したいんじゃ。

【今回の結論】//データ処理シートのヘッダー並び順・ここに並んでいる順に、0から列数が振られるlet labels =[ "name", "tel", "age",];function setCoordinates(labels){ let coordinates =

もっとみる