Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon 2017/09/01 [GAS]GoogleDrive内のCSVを配列処理
Google Apps Script で CSVデータを配列で処理してみる。

サンプルとしてCSVファイルは
・Google Drive内
・SJISフォーマット
・フォルダとファイル名を指定(フォルダ名はGoogle Drive内でユニーク)
・CSVの内容は、first_name, last_name, email 形式で1行目はタイトル
function main() {
      var rows = csvtoArray('フォルダ名', 'ファイル名');

      for (var i = 1; i < rows.length; i++) {
          var row = rows[i];

          var first_name = row[0];
          var last_name = row[1];
          var email = row[1];
          
          Logger.log(last_name);
          Logger.log(first_name);
          Logger.log(email);
     }
}

function csvtoArray(folder_name, file_name) {
    var folder = DriveApp.getFoldersByName(folder_name).next();
    var file = folder.getFilesByName(file_name).next();

    var csv = file.getBlob().getDataAsString("Shift_JIS");
    var rows = Utilities.parseCsv(csv);
  
    return rows;
}
getFoldersByName()、getFilesByName() のイテレートは横着して next() で最初のアイテムを取得
(GoogleDrive内で重複する場合、それなりの処理が必要)
icon 2017/08/30 pg_constraint で外部キー情報取得
pg_constraint の内部キー、外部キーは、pg_class、pg_attribute にアクセスしないと取得できない。

・contype = 'f'
・conrelid(内部テーブル):smallint
・confrelid(外部テーブル):smallint
・conkey(内部キー): smallint[]
・confkey(外部キー): smallint[]

まず、内部キーテーブルを作成して、副問い合わせで外部キーも連結させる。
内部キー、内部キーは数値配列なので抽出に「ANY」を利用する。

SELECT 
origin.*,
pg_class.oid as foreign_class_id,
pg_class.relname as foreign_relname,
pg_attribute.attnum as foreign_attnum,
pg_attribute.attname as foreign_attname
FROM 
(
SELECT 
pg_constraint.conrelid
, pg_class.oid as pg_class_id
, pg_class.relname
, pg_attribute.attnum
, pg_attribute.attname
, pg_constraint.confrelid
, pg_constraint.confkey
, pg_constraint.contype
FROM  pg_constraint
            LEFT JOIN pg_attribute ON pg_constraint.conrelid = pg_attribute.attrelid AND pg_attribute.attnum = ANY(pg_constraint.conkey)
            LEFT JOIN pg_class ON pg_constraint.conrelid = pg_class.oid
WHERE pg_constraint.contype = 'f' AND pg_constraint.conrelid = 'pg_classのID'
) AS origin
  LEFT JOIN pg_attribute ON origin.confrelid = pg_attribute.attrelid AND pg_attribute.attnum = ANY(origin.confkey)
  LEFT JOIN pg_class ON origin.confrelid = pg_class.oid
;
icon 2017/08/14 [Debian]Virtualbox(Debian)とmac(OS X)のフォルダ共有
OSXからLinuxのファイル共有(Samba)をする場合、OSX側からのアクセスが不安定だったりする。
OSX上のファイル処理速度優先の為に、Virtualbox(Debian) から OSX のディレクトリをマウントしてみる。
※当然ながらLinux内で、OSX上のファイル実行速度は遅くなる


OSX(ホスト側)
/Users/yoo/debian/

Debian(クライアント側)
/home/yoo/mac/

VirtualBoxの共有フォルダ設定(OSX)


次に、VirtualBoxで共有フォルダ設定をするが、GUIで設定するのが簡単
VBoxManageでCUI設定することも可能
$ VBoxManage setextradata Debian8.5 VBoxInternal2/SharedFoldersEnableSymlinksCreate/debian 1

※Debian8.5 はVirtualBoxシステム名
※debian は後に設定するマウント名でホスト側、クライアント側で合わせる

共有フォルダ設定の確認

$ VBoxManage getextradata Debian8.5 enumerate
Key: GUI/LastCloseAction, Value: SaveState
Key: GUI/LastGuestSizeHint, Value: 720,400
Key: GUI/LastNormalWindowPosition, Value: -1890,84,720,420
Key: GUI/RestrictedRuntimeDevicesMenuActions, Value: Nothing
Key: GUI/RestrictedRuntimeMachineMenuActions, Value: SaveState,PowerOff
Key: GUI/ScaleFactor, Value: 1
Key: GUI/StatusBar/IndicatorOrder, Value: HardDisks,OpticalDisks,FloppyDisks,Network,USB,SharedFolders,Display,VideoCapture,Features,Mouse,Keyboard
Key: VBoxInternal2/SharedFoldersEnableSymlinksCreate/debian85, Value: 1

Linuxヘッダーインストール(Linux)


クライアント側で、VitualBoxツールをインストールするが、Debian8.xの場合、Linuxヘッダーをインストールしないとマウント時にエラーになるようだ。
/sbin/mount.vboxsf: mounting failed with the error: No such device

DebianをアップグレードしてLinuxヘッダーをインストール
# aptitude update
# aptitude upgrade
# uname -r
3.16.0-4-amd64
# aptitude install linux-headers-3.16.0-4-all

VirtualBoxツールインストール(Linux)


VirtualBoxツールをダウンロード、マウントしてインストールスクリプトを起動
# wget http://download.virtualbox.org/virtualbox/5.1.18/VBoxGuestAdditions_5.1.18.iso
# mount -r VBoxGuestAdditions_5.1.18.iso /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run

mount.vboxsfコマンドを貼り直す
# rm /sbin/mount.vboxsf
# ln -s /usr/lib/x86_64-linux-gnu/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf

マウント
# mount -t vboxsf -o uid=yoo,gid=yoo debian /home/yoo/mac

自動設定は/etc/rc.local で設定しておく
<< 最初 < 前ページ 次ページ > 最後 >>

このサイトについて

HTML5 & CSS3化しつつあるので、現在IEには対応してません。
できれば、Google Chromeやら Apple SafariのWebKit系をお勧めします。

DBからプログラムまで一応全て自作なので、バグってたらすいません。
実験でFlash版(Flex版)を先に作りましたが、ちょっと停止してます。

プロフィール

新宿近辺でSE & プログラマーしてます。
Webアプリの開発・設計とか、最近はiPhoneとか奮闘してます。
デザインはさっぱりです。

音楽は、昔からCubase打ち込み人間で、そっちの方が経歴は長いですが、最近はやる暇がないです。。。

今は、Gon's Privates ってバンドのキーボードやってます。
単発的に、なんちゃってジャズ系のライブもやってます。

名古屋生まれなのでドラゴンズ好きです。

Info && SNS

Gmail

 yohei.yoshikawa@gmail.com

Twitter

 http://twitter.com/yoo_yoo_yoo

あんまつぶやきませんが、一応技術系メインで使ってます。情報交換はこちらへ

FaceBook

 http://www.facebook.com/#!/profile.php?id=1439130626

海外の知り合いがいないので閑散としてます。

mixi

 http://mixi.jp/show_profile.pl?id=230072

音楽仲間とかはこっちメインでやってます。興味があればこちらへ