プログラミング

GAS を用いて Gmail の「下書き」を全て送信するスクリプト

結論 以下のとおりです。 function sendDraftMails() { const draftMails = GmailApp.getDrafts() for(let i = 0; i < draftMails.length; i++) { draftMails[i].send() } } ドキュメント Gmail の GAS については公式ドキュメントが分かりやすくて助かりま…

GAS の Gmail のメソッド "GmailApp.createDraft" にて "options" の "name" プロパティが効かない

結論 原因が分からない…。 状況 以下のような GAS を実行した際に、「下書き」として作成されるメールの From に期待通りの name が付与されてくれない*1。 function sampleFunction() { const toAddress = "recipient@example.com"; const subject = "Subje…

GAS で createFile(BLOB) に対してファイル名を付与する方法

結論 const createdFile = currentFolder.createFile(BLOB) createdFile.setName('HOGE.JPG') 補足 createFile(BLOB) の戻り値がファイルオブジェクトであることを利用します 作ってから直後にファイル名を変更する、という方法です

zsh で Volta のオートコンプリートを有効にする方法

結論 1. まず補完機能用のスクリプトを出力します (_volta) 。 $ volta completions zsh -o _volta note: does not exist, creating it success: installed completions to _volta 2. 出力したスクリプトを /usr/local/share/zsh/site-functions に移動しま…

apt で mysql-server や mysql-client を install できない(見つからない)とき

結論 default-mysql-server や default-mysql-client をインストールします。 $ sudo apt install default-mysql-server $ sudo apt install default-mysql-client

Twitter の API で取得できる media(画像)の URL は原寸大画像を示してはいない

結論 たとえば、API で取得できる media_url_https が https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq.jpg であったとします。この URL に wget をしても原寸大画像は得られません*1。 常に原寸大画像を取得するためには https://pbs.twimg.com/media/FAlJ_Js…

\u 始まりの Unicode でエンコードされたテキストが含まれている JSON は jq を通せば UTF-8 にデコードされる

実例 たとえば以下のような JSON (sample.json) があったとします。 { "keyword": "\u751f\u5f92\u4f1a\u9577" } 上記の keyword の値である \u751f\u5f92\u4f1a\u9577 の部分を UTF-8 にデコードした JSON を出力するには jq を通せばよいです。 $ cat samp…

zsh で pyenv を用いて Python をインストールするも実行できない場合

前提 OS は Ubuntu です。 結論 ~/.zprofile にシェルの設定を書きます。 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init --path)" fi 参考 github.com

VSCode で RuboCop や Solargraph や Ruby Test Explorer が実行できないときの一つの解決法

結論 コマンドの実行パスを絶対パスで書く。 実例 以下は Ruby Test Explorer の設定です。ここで実行コマンドパスを設定する箇所において、絶対パスでパスを記述します。 例えば、 .rbenv を使っている場合は /home/ここにユーザー名が入る/.rbenv/shims/bu…

スプレッドシートでの TRUE または FALSE は、GAS 上では小文字の文字列('true' または 'false')扱い

gyazo.com 結論 とあるセルに TRUE あるいは FALSE というデータが格納されているとき、GAS 上での判別は以下のようになります。 // targetCell に TRUE というデータが格納されているとします console.log(typeof targetCell); // string console.log(targe…

Raspberry Pi の Ubuntu で pip install 時に ModuleNotFoundError: No module named '_ctypes' というエラーが出るとき

結論 (Raspberry Pi が、というわけではなく)以下のようにパッケージをインストールします。 $ sudo apt install -y build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-d…

2020年の段階で私が知らないこと

はじめに 本記事のタイトルは、以下の記事にならっています。 overreacted.io また、以下の記事に触発されています。 blog.unasuke.com zenn.dev 結論 以下のことをほとんど知りません。 Go React TypeScript Prisma GraphQL Cypress 焦り 上記のことに無知…

Visual Studio Code で JavaScript が意図しない Lint を適用するようになったら TypeScript の設定を見てみる

結論 ESLint や Prettier や TSLint やその他もろもろの拡張機能を無効にしても、なぜか .js ファイルの保存時に意図しない Lint がかかるときには TypeScript の設定を見てみるのも一つの方法です。 参考画面 補足 TypeScript の設定は無効にすることができ…

MP4ファイルは末尾に適当に何かを追記しても動画自体は見ることはできる

結論 hoge.mp4 という MP4ファイル があったとします。 このとき、foobar という単純テキストの文字列を hoge.mp4 の末尾に以下のように追加したとします。 $ echo foobar >> hoge.mp4 追加後、hoge.mp4 ファイルの視聴をすることができます。 参考

Google Images Download をさしあたり動かす方法

仕様変更により、Google Images Download が現在は期待通りに動作しません。Unfortunately all xxx could not be downloaded... というメッセージが出ます。 $ googleimagesdownload -k 'ねこ' (省略) Evaluating... Getting you a lot of images. This ma…

Puppeteer での「セレクタ」の書き方は一般的なセレクタの書き方を使うことができる

結論 たとえば、特定のセレクタをクリックする際に、page.click('HOGEHOGE') と記述するとします。ここの HOGEHOGE がセレクタですが、この部分の書き方には一般的なセレクタの書き方を使うことができます。 すなわち、以下の記法を使うことができます。 dev…

Mac で jenv を用いて複数バージョンの Java を用いる方法

まず複数バージョンの Java をインストールする 複数バージョンの Java をインストールする方法はこちらに書かれているとおりです。 stackoverflow.com 以下、具体的な手順を書きます。

GitHub でマージ後にマージ元のブランチが自動削除されることを防ぎたいときのチェックポイント

まずはリポジトリの設定を見直す リポジトリの Settings から Options のメニュー項目を選び*1、下の方にある Automatically delete head branches にチェックが入っていると、マージ後に自動でマージ元のブランチが削除されます。 gyazo.com Refined GitHub…

Mac および Ubuntu で Dart をインストールする方法

結論 公式ドキュメント に書いてあるとおりです。 具体例 macOS $ brew tap dart-lang/dart $ brew install dart $ dart --version Dart VM version: 2.6.1 (Mon Nov 11 13:12:24 2019 +0100) on "macos_x64" $ pub --version Pub 2.6.1 Ubuntu $ sudo sh -c…

mysqld_safe コマンドを実行した結果、Directory '/var/run/mysqld' for UNIX socket file don't exists. というエラーが表示された場合の対処法

結論 /var/run/mysqld というディレクトリを作り、適切なオーナーを設定します。その後、再度 mysqld_safe コマンドを実行します。 具体的方法 $ sudo mkdir /var/run/mysqld $ sudo chown mysql:mysql /var/run/mysqld エラーログ $ sudo mysqld_safe --ski…

Puppeteer で リダイレクト等 による ページ遷移 を待つ方法

結論 waitForNavigation() を使いましょう。 実例 await page.goto('https://wait-redirect.example.com/'); await page.waitForNavigation(); 公式ドキュメント github.com 参考 Cloudflare の DDos Protection を経由する場合などに有効です。

cargo install した際に use of unstable library feature ... と怒られたとき

結論(の一つ) 以下のコマンドを用いて Rust のバージョンを上げる。その後に cargo install をやり直す。 $ rustup install stable rustc 1.36.0 (a53f9df32 2019-07-03) (省略) $ rustc --version rustc 1.38.0 (625451e37 2019-09-23) 背景 grex をイン…

POSTメソッド をさっさと試したい場合は Slack の Webhook に投げるのが簡単

結論 POSTメソッド をテストしたい場合は Slack を用いると簡単です。 Slack の Webhook のアドレスを取得する*1 そのアドレスに POST する Content-Type は application/x-www-form-urlencoded 最小限の payload は { text: "ほげほげ" } *1:このアドレスを…

よちよち.rb & Sendagaya.rb 合同開催「よちがや.rb」 〜REST アーキテクチャを理解しよう会〜 に行ってきました

よちよち.rb & Sendagaya.rb 合同開催「よちがや.rb」 〜REST アーキテクチャを理解しよう会〜 2019/01/07 に開催された「よちよち.rb & Sendagaya.rb 合同開催「よちがや.rb」 〜REST アーキテクチャを理解しよう会〜」に行ってきました。内容の詳細につい…

VSCode でメモをとる拡張機能の VSNotes が便利

VSNotes Visual Studio Code の拡張機能に VSNotes というものがあります。 VSCode 上でメモをとることができる拡張機能です。以下のような特徴があります。 実体は指定したディレクトリ配下の実ファイル 階層構造で管理ができる タグを指定することができる…

OSS の IDE(コードエディタ)の選別を断念した話

背景 クローズドで利用できる OSS の IDE(エディタ)がほしい。 結論 どれも実用に至ると判断できませんでした。以下、試したものと所感です。 Codebox 最終コミットは3年半前 基本的な機能はある ペアプロできる Chrome だと インデント が 3以下 の場合に…

CodePen の クローン である OSS の CodePan をインストールする

CodePen CodePen とは、ご存知、Webブラウザで完結できるフロントエンドの開発環境です。 https://codepen.io/ CodePan その CodePen の クローン OSS の CodePan というものがあります。これをインストールします。 なお、デプロイ済みのデモはこちらです。…

Twitter のツイートを MySQL に格納するときに Data too long for column と出るとき

結論 ツイートの本文は VARCHAR(255) では収まらない(ときがある)ので、TEXT型 にする。

「同一生成元ポリシー」の読み方

結論 「どういつせいせいげんポリシー」 Wikipedia 同一生成元ポリシー - Wikipedia 余談 今までずっと「どういつせいせいもとポリシー」と読んでいました……。

Ubuntu 16.04 LTS で MeCab を NEologd とともにインストールする

MeCab あえて記載する必要はないかと思いますが、形態素解析エンジンです。「和布蕪」です。 MeCab: Yet Another Part-of-Speech and Morphological Analyzer Ubuntu 16.04 LTS にインストール OS や バージョン ごとに微妙にインストール方法が異なるので、…

Powered by はてなブログ