3DCG屋さんの活動記録

PROFILE ★★こんな人です

3DCGを活用した映像や没入体験コンテンツの制作をしています。テクノロジーの社会実装に興味があり。テクニカルディレクター。面白いこと新しいことにワクワクする気持ちに『素直』でいつづける。

ラベル 自動化 の投稿を表示しています。 すべての投稿を表示
ラベル 自動化 の投稿を表示しています。 すべての投稿を表示

2025年9月17日水曜日

自分専用ダッシュボードをMacで自動レイアウトする方法(AppleScript活用)


毎朝PCを立ち上げると、Gmail・Googleカレンダー・スプレッドシートなど「必ず開くページ」を手動で並べ直していませんか?

今回、AppleScript を使って、Chromeの任意ページを外部モニターに「自分専用ダッシュボード」として自動レイアウトする方法をまとめました。備忘録として残しておきます。


実現したいこと

  • Mac起動後にワンクリックで、必要なページを Chrome で開く

  • 外部モニターの解像度(例: 3440x1440)に合わせて 4分割レイアウト

  • 毎朝同じ位置に Gmail・カレンダー・スプレッドシートを配置

スクリーンショット例:

  • 左上:Googleカレンダー(週表示)

  • 右上:Googleカレンダー(日表示)

  • 左下:Gmail

  • 右下:Googleスプレッドシート


AppleScript コード例

以下を スクリプトエディタ に貼り付け、「アプリケーション形式」で保存します。Dock に置けばワンクリックで起動できます。

tell application "Google Chrome"
    -- 左上(Googleカレンダー:週表示)
    set win1 to make new window
    set URL of active tab of win1 to "https://calendar.google.com/calendar/u/0/r/week"
    set bounds of win1 to {0, 0, 1720, 720}
    
    -- 右上(Googleカレンダー:日表示)
    set win2 to make new window
    set URL of active tab of win2 to "https://calendar.google.com/calendar/u/0/r/day"
    set bounds of win2 to {1720, 0, 3440, 720}
    
    -- 右下(スプレッドシート)
    set win3 to make new window
    set URL of active tab of win3 to "https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit"
    set bounds of win3 to {1720, 720, 3440, 1440}
    
    -- 左下(Gmail)
    set win4 to make new window
    set URL of active tab of win4 to "https://mail.google.com/mail/u/0/#inbox"
    set bounds of win4 to {0, 720, 1720, 1440}
end tell

仕組みのポイント

  • set bounds of winX to {左, 上, 右, 下} でウィンドウの座標をピクセル指定できます。

  • 3440x1440 を半分に分けて、それぞれ 1720x720 の4領域に分割。

  • URL部分を自分の「毎朝開きたいページ」に置き換えれば、自分専用ダッシュボードが完成します。


応用

  • 2分割や3分割レイアウトも自由に設定可能。

  • Automatorショートカット.app と組み合わせれば、Mac起動時に自動起動も可能。

  • Chrome以外のアプリ(SafariやFinder)も同様に位置指定できます。


まとめ

毎朝の「ウィンドウ並べ直し作業」を AppleScript で完全自動化できました。
わずか数十行のスクリプトで、外部モニターを自分専用のダッシュボードに変えられます。

👉 ルーチンワークを減らして、自分の時間を増やしたい人におすすめです!

2022年10月20日木曜日

Python自動化:フォルダ内の複数枚の透過PNGを1枚に結合 【Dir2Flipbook】


Dir2Flipbook


今回やったこと

フォルダ内の複数枚の透過PNGを1枚に結合するのを自動化。




WEB上はたくさんの「画像結合ソフト」がある!

ただ、試した見たもののやりたいことと若干ずれてたので

欲しい機能だけに絞ったPython作った。


<機能>

・フォルダ内の画像を1枚に結合

・透明度(アルファ)保持

・解像度に制限なし

・ただし、PNG専用


<使い方>

①Pythonをダウンロードして、3箇所変更する

フォルダパス、横枚数、縦枚数


②実行すると、フォルダ内の「combinedフォルダ」に画像が作成される

以上。

使えない場合は、
Pillowをインストールしてみてください。


Windowsなら

     pip install Pillow


<コード>




2022年5月31日火曜日

【UE】EUWでシーケンサーのタイムレンジを簡単に設定・変更するツール(仮)


UE4.27のEditorUtilityWidgetで実装。


<やりたいことリスト> 

カレントシーケンサーのIN/OUT変更

  ・開始位置だけ指定してシフト移動

    ・カレントシーケンサーのカレントタイムに合わせる ★1

    ・IN値 指定

  ・IN/OUT値 それぞれ個別に指定

■選択したシーケンサーのIN/OUT変更

  ・開始位置だけ指定してシフト移動

    ・カレントシーケンサーのカレントタイムに合わせる ★2

    ・IN値 指定 

  ・IN/OUT値 それぞれ個別に指定

------------------------------------------------------


ひとまず上記の★1,★2だけ作成。

残りは、また時間見つけてやります!


以下スクショ。


GUI


★1


★2


2021年8月20日金曜日

GoogleSpreadSheetのお勉強 シートの複製やシートのURL一括取得


お勉強備忘録


①シートの複製

//シート複製

function dupSheetCustom(sourceSheetName,newName){

  //開いているスプレッドシートを選択

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //指定したシートをアクティブ化

  sourceSheet = ss.getSheetByName(sourceSheetName)

  ss.setActiveSheet(sourceSheet)

  //アクティブなシートを複製してリネーム

  ss.duplicateActiveSheet().setName(newName);

  //複製したシートを選択

  var sheet = SpreadsheetApp.getActiveSheet(); 

  //セルに値に入力

  sheet.getRange(2,1).setValue(newName) ;

  strformula = "=sheetname";

  Utilities.sleep(100);

}


②シートの削除

//シート削除

function delSheetCustom(sheetname){

  // 現在アクティブなスプレッドシートを取得

  var ss = SpreadsheetApp.getActive();

  // そのスプレッドシートにある シート名:テスト用シート のシートを取得 

  var sheet = ss.getSheetByName(sheetname);

  // そのシートを削除

  ss.deleteSheet(sheet);

}


③シートのURL取得と、セルの値参照式の作成

//シートのリンク取得

function genSheetUrl(sheetname){

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var ss_name = ss.getName(); //開いているスプレッドシート名を取得

  var sh_name = sheetname; //シート名

  var ss_url = ss.getUrl(); //スプレッドシートのURLを取得

  var sh_id = ss.getSheetByName(sheetname).getSheetId(); //指定したシートのIDを取得

  var sh_url = ss_url + "#gid=" + sh_id; //シートのURLを指定するために、スプレッドシートのURLとシートIDを"#gid="でくっつけます。

  var urlSet = [sheetname , sh_url]; //シート名、シートURL のペアを作る

  return urlSet;

}


◆①~③のバッチ化


④ソースシート名と、複製後のシート名(複数)を指定して、複製の一括処理


⑤シート名(複数)を指定して、削除の一括処理


⑥シート名(複数)を指定して、URL取得とセルの値参照式作成して、指定したシートに記録


//シートのリンク一括取得

function genSheetUrlBatch(){

 var nameList = ["mySheet1", "mySheet2", "mySheet3"];

 urlSheetName = "_urlList"; 

 //繰り返し処理

 var urlSet = [];

 for(var i=0; i<nameList.length; i++){

    urlSet = genSheetUrl(nameList[i]);

    latestFunc = "=IMPORTRANGE("+"\""+urlSet[1]+"\",\""+urlSet[0]+"!$B$1:$C$1\")" ; 

    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,1).setValue(urlSet[0]); //シート名を

    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,2).setValue(urlSet[1]); //URLを記入

    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,3).setValue(latestFunc); //最新バージョンを取得する関数


    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,1).setValue("Sheet Name");//一行目情報

    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,2).setValue("Sheet URL"); 

    SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,3).setValue("Latest Info"); 

    

 }

}