プログラミング

2021年08月04日

【GAS】CSVファイルをダウンロードしてGoogleドライブの指定フォルダに保存する

Google で検索をすればすぐに出てきますが、一番簡単なやり方は調べにくいので備忘録として書いておきます。

目的

とあるURL にアクセスするとcsv ファイルをダウンロードできるとします。このcsv ファイルをGoogle ドライブの指定フォルダに保存したいと思います。

やり方

ざっとソースコード全体とそれにたいするコメントにて説明します。

// CSVファイル取得. var response = UrlFetchApp.fetch("url to csv"); // 取得してきたデータをUTF-8 のテキストとして保持. var content = response.getContentText("UTF-8"); // Google ドライブに保存. const folder = DriveApp.getFolderById("folder id"); folder.createFile("file name", content, MimeType.CSV);

folder id はGoogle ドライブのフォルダのIDでGoogle ドライブのフォルダにアクセスしたときのURL に含まれる文字列なのでアクセスして確認をします。

https://drive.google.com/drive/folders/[folder id]

こんな感じになっていると思います。
1日1回csv を集めたいときなどにはトリガーを指定しておくことでデータが自動的に集まってくるのでお手軽です。



rabbitcats at 20:00|PermalinkComments(0)

2021年06月16日

GitHub 上で新規リポジトリ作成時のデフォルトブランチ名を変更する

GitHub でリポジトリを新規に作成すると名前がmain になってしまうので、それを慣例のmaster に変更する方法

やりかた

GitHub にログインしたのちに右上のアイコンをクリックしてSettings から設定画面を表示します。

Account settings タブのRepositories を選択すると下記の画面になるので、"Repository default branch" を変更します。

20210616_1


これだけです。



rabbitcats at 18:00|PermalinkComments(0)

2021年04月16日

SPI接続のスマートウォッチ用ディスプレイをnRF52840 Express で動かす

Aliexpress で見つけたスマートウォッチ用のディスプレイをAdafruit ItsyBitsy nRF52840 Express にて動かす方法です。

Evernote にいろいろと調べてやり方などをメモしていますが、Blog に書くのもたまには良いかと思って書いていきます。

前提

Adafruit ItsyBitsy nRF52840 Express を使うために必要な設定はここでは触れませんので、適宜インストールなどを行ってください。

使用するディスプレイ

Aliexpress で見つけたスマートウォッチ用のディスプレイです。外観は下記のようなものとなっています。
SPI 接続で使える状態のものなのでお手軽に使うことができます。

20210412_1



このディスプレイはコントローラーにGC9A01 を使っておりそれに対応したライブラリを使うと楽に操作が行えるでしょう。 入力電圧については3.3V をそのまま接続できるため、下記ボードの3.3V を配線しました。

Adafruit ItsyBitsy nRF52840 Express で使うにあたって

Arduino IDE やその他の方法でライブラリのインストールを行います。
今回使うライブラリはArduino GFX Graphics library です。
もし、ライブラリマネージャーからインストールする場合には下記のライブラリを検索してください。


20210412_2



Adafruit にもAdafruit GFX Library がありますが、Arduino の方がソースコードが分かりやすかったためこちらを使うことになりました。とはいってもソースコードをたどるとAdafruit のライブラリを参考にしていたりそこにたどり着くのですが……

各ピンの接続

Adafruit ItsyBitsy nRF52840 Express ディスプレイ(GC9A01)
GND GND
3V VCC
SCK(4) SCL
MOSI(3) SDA
空いているIO(RESとして使う) RES
空いているIO(DCとして使う) DC
空いているIO(CSとして使う) CS
空いているIO BLK

BLK はバックライトのオンオフのためのピンとなっています。面倒なときは解放状態でも問題ありません。
今回はCS を7ピンに、DC を10ピンにRES を9ピンにそれぞれ繋ぎました。

ソースコード

下記のソースコードはArduino GFX Graphics library を入れると一緒に手に入るサンプルコードのHelloWorld を今回の接続に合わせて変えたものです。
出力フォントについては今回は触れません。詳しく知りたい方はArduino_GFX クラスにあるsetFont まわりを調べてください。

/******************************************************************************* * Start of Arduino_GFX setting ******************************************************************************/ #include <Arduino_GFX_Library.h> // Definition for GPIO. #define TFT_CS 7 #define TFT_DC 10 #define TFT_RST 9 // #define TFT_BL 6 // General hardware SPI Arduino_DataBus *bus = new Arduino_HWSPI(TFT_DC, TFT_CS); // GC9A01 IPS LCD 240x240 Arduino_GC9A01 *gfx = new Arduino_GC9A01(bus, TFT_RST, 0 /* rotation */, true /* IPS */); /******************************************************************************* * End of Arduino_GFX setting ******************************************************************************/ void setup(void) { gfx->begin(); gfx->fillScreen(BLACK); #ifdef TFT_BL pinMode(TFT_BL, OUTPUT); digitalWrite(TFT_BL, HIGH); #endif gfx->setCursor(10, 10); gfx->setTextColor(RED); gfx->println("Hello World!"); delay(5000); // 5 seconds } void loop() { gfx->setCursor(random(gfx->width()), random(gfx->height())); gfx->setTextColor(random(0xffff)); gfx->setTextSize(random(9) /* x scale */, random(9) /* y scale */, random(3) /* pixel_margin */); gfx->println("Hello World!"); delay(1000); // 1 second }

表示されるもの


20210412_3



こんな感じに表示されます。サンプル通りです。

続きを読む

rabbitcats at 18:00|PermalinkComments(0)

2021年04月13日

【VSCode】mdwiki をスムーズに閲覧する方法

大規模なWiki システムは必要ないけれども、ちょっとしたことを階層的にまとめるのにちょうどいいmdwiki ですが、最近ではブラウザで手元のmdwiki.html を開いても正しく表示されないことがあります。

そんな時にVSCode の拡張であるLive Serverを使うことでスムーズに閲覧することができます。

使い方

上記リンク先を見てもらえばわかるので詳しい方法は割愛します!
簡単に言えば、mdwiki.html ファイルをVSCode で開いて、画面下の「Go Live」を選択してアクセスするか、コマンドパレットから「>Live server: Open with Live Server」を選択してアクセスすることで閲覧できます。

それでは良いmdwiki ライフを!



rabbitcats at 20:00|PermalinkComments(0)

2021年02月22日

Typescript の文字列定義まわりの不思議

下記のコードを実行するとHoge.user はundefined となり、Hoge.user2 は期待通りに定義される。

class Hoge {
    static readonly user : "name1";
    static readonly user2 = "name2";
}

console.log(Hoge.user);
console.log(Hoge.user2);

Playground

ただ、最近までReact + Typescript でHoge.user の方も文字列がちゃんと定義されていたのがよくわからないですね。どうして今までは大丈夫だったのでしょうね。



rabbitcats at 15:00|PermalinkComments(0)