投稿

4月, 2025の投稿を表示しています

googleスプレッドシートで名前範囲内のデータが更新された時にタイムスタンプを更新

Quick Edit Pencil
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var namedRange = e.source.getRangeByName("YourNamedRange"); // 名前付き範囲を指定
  var timestampSheet = e.source.getSheetByName("YourTimestampSheet"); // タイムスタンプを表示するシートを指定
  var timestampCell = timestampSheet.getRange("A1"); // タイムスタンプを表示するセルを指定

  // 名前付き範囲内のセルが編集された場合
  if (range.getA1Notation() === namedRange.getA1Notation() || 
      (range.getRow() >= namedRange.getRow() && range.getRow() < namedRange.getLastRow() &&
       range.getColumn() >= namedRange.getColumn() && range.getColumn() < namedRange.getLastColumn())) {
      if (timestampCell) {
        var currentDate = new Date();
        var formattedDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm");
        timestampCell.setValue("Last Update Date: " + formattedDate); // 書式を指定してタイムスタンプを設定
      }
  }
}
名前付き範囲が複数ある場合
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var timestampSheet = e.source.getSheetByName("YourTimestampSheet"); // タイムスタンプを表示するシートを指定
  var timestampCell = timestampSheet.getRange("A1"); // タイムスタンプを表示するセルを指定

  // 監視する名前付き範囲のリスト
  var namedRanges = ["NamedRange1", "NamedRange2", "NamedRange3"]; // 監視する名前付き範囲を指定

  // 監視する名前付き範囲のいずれかが編集された場合
  for (var i = 0; i < namedRanges.length; i++) {
    var namedRange = e.source.getRangeByName(namedRanges[i]);
    if (namedRange) {
      if (range.getA1Notation() === namedRange.getA1Notation() || 
          (range.getRow() >= namedRange.getRow() && range.getRow() < namedRange.getLastRow() &&
           range.getColumn() >= namedRange.getColumn() && range.getColumn() < namedRange.getLastColumn())) {
        var currentDate = new Date();
        var formattedDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm");
        timestampCell.setValue("Last Update Date: " + formattedDate); // 書式を指定してタイムスタンプを設定
        break; // 1つの範囲が編集されたらループを終了
      }
    }
  }
}
Google スプレッドシートの「トリガー」を使用して、特定のセルが編集されたときに自動的に実行される「イベントハンドラー」です。具体的には、onEdit(e) 関数は、スプレッドシート内の任意のセルが編集されたときに自動的に呼び出されます。

仕組みの説明

onEdit(e): この関数は、スプレッドシート内のセルが編集されるたびに自動的に実行されます。e はイベントオブジェクトで、どのセルが編集されたかなどの情報を含んでいます。


監視: スクリプトは、特定の名前付き範囲内のセルが編集されたかどうかを監視しています。もしその範囲内のセルが編集された場合、指定したセルにタイムスタンプを更新します。


カスタム関数との違い: カスタム関数は、スプレッドシートのセルに直接入力して使用する関数で、手動で呼び出す必要があります。一方、onEdit トリガーは自動的に実行されるため、ユーザーが何かを入力するたびに自動的に反応します。
まとめ

このスクリプトは、特定のセルが編集されたときに自動的にタイムスタンプを更新するためのものであり、カスタム関数ではなく、イベントに基づいて動作するものです。これにより、ユーザーは手動で関数を呼び出す必要がなく、スプレッドシートの操作がよりスムーズになります。

googleスライドにリンクした表を更新するスクリプト

Quick Edit Pencil
GASについて質問ですGoogleスライド内にスプレッドシート... - Yahoo!知恵袋
↑の結果は
2024/7/17 9:34 の情報では不可能な様子でした。グラフはできるそうです。

↑の結果は
2023/06/25 12:30 の情報では不可能な様子でした。グラフはできるそうです。

キーワード
googleスライド、リンクされたオブジェクトを更新、Google Apps Script

blender4.1 レンダリング画像を左右反転する方法

Quick Edit Pencil

>方法: コンポジティングを使用する
レンダリング: 通常通りにシーンをレンダリングします。
コンポジティング: コンポジティングノードを使用して、レンダリング結果を左右反転させることができます。
「コンポジティング」タブに移動し、「Use Nodes」を有効にします。
「Image」ノードを追加し、レンダリング結果を接続します。
「Transform」ノードを追加し、X軸のスケールを-1に設定します。
最後に「Composite」ノードに接続します。


コンポジティングノードでの反転のしかたを初心者にもわかるように詳しく教えて

.
GPT-4o mini



Blenderのコンポジティングノードを使用して画像を左右反転させる方法を、初心者向けに詳しく説明します。以下の手順に従ってください。


ステップ1: シーンをレンダリングする
シーンを作成: Blenderでシーンを作成し、レンダリングしたいオブジェクトを配置します。
レンダリング: F12キーを押してシーンをレンダリングします。レンダリングが完了すると、画像が表示されます。

ステップ2: コンポジティングタブに移動
コンポジティングタブを開く: 上部のタブから「コンポジティング」を選択します。
ノードを使用する: 「Use Nodes」にチェックを入れます。これにより、ノードエディタが表示されます。

ステップ3: ノードを設定する
レンダー結果ノードを追加:
右クリックして「Add」メニューを開き、「Input」から「Render Layers」を選択します。これがレンダリング結果を取得するノードです。
変換ノードを追加:
再度右クリックして「Add」メニューを開き、「Distort」から「Transform」を選択します。これが画像を変換するためのノードです。
コンポジットノードを追加:
もう一度右クリックして「Add」メニューを開き、「Output」から「Composite」を選択します。これが最終的な出力ノードです。

ステップ4: ノードを接続する
ノードを接続:
「Render Layers」ノードの出力(右側の出力ポイント)を「Transform」ノードの入力(左側の入力ポイント)に接続します。
「Transform」ノードの出力を「Composite」ノードの入力に接続します。

ステップ5: 反転設定を行う
Transformノードの設定:
「Transform」ノードを選択し、プロパティパネルで「X Scale」の値を-1に設定します。これにより、画像が左右反転します。

ステップ6: レンダリング結果を確認する
ノードを確認: ノードが正しく接続されていることを確認します。
レンダリング: F12キーを押して再度レンダリングします。コンポジティングノードを通じて、左右反転された画像が表示されるはずです。
ステップ7: 画像を保存する
画像を保存: レンダリング結果が表示されたら、Imageメニューから「Save As」を選択して、反転された画像を保存します。
これで、Blenderのコンポジティングノードを使用して画像を左右反転させる方法が完了です。もし何か不明な点があれば、遠慮なく質問してください!<

blender4.1 マテリアルが設定されているオブジェクトの一覧を取得するスクリプト

Quick Edit Pencil
GPT-4o mini


Blender 4.1では、Pythonスクリプトを使用してシーン内のオブジェクトを操作することができます。以下のスクリプトは、特定のプレフィックスを持つマテリアルが適用されているメッシュオブジェクトの一覧を取得し、コンソールに表示するものです。

python

コードをPython Consoleにコピーして使う。
import bpy

# 検索するマテリアル名のプレフィックス
material_prefix = "Material.020"

# マテリアルが適用されているオブジェクトをリストアップ
found_objects = False  # オブジェクトが見つかったかどうかのフラグ
for obj in bpy.data.objects:
    if obj.type == 'MESH':  # メッシュオブジェクトのみを対象
        for mat in obj.data.materials:
            if mat and mat.name.startswith(material_prefix):  # プレフィックスで始まるか確認
                print(f"オブジェクト名: {obj.name} に {mat.name} が適用されています。")
                found_objects = True

if not found_objects:
    print(f"{material_prefix} で始まるマテリアルが適用されているオブジェクトは見つかりませんでした。")
スクリプトの説明 モジュールのインポート: import bpy: BlenderのPython APIを使用するために、bpyモジュールをインポートします。 マテリアル名のプレフィックス設定: material_prefix = "Material.020": 検索対象とするマテリアル名のプレフィックスを設定します。この例では「Material.020」で始まるマテリアルを探します。 オブジェクトのリストアップ: found_objects = False: オブジェクトが見つかったかどうかを示すフラグを初期化します。 for obj in bpy.data.objects: Blenderのデータブロックからすべてのオブジェクトをループ処理します。 メッシュオブジェクトのフィルタリング: if obj.type == 'MESH': オブジェクトがメッシュタイプであるかを確認します。メッシュオブジェクトのみを対象とします。 マテリアルの確認: for mat in obj.data.materials: オブジェクトに適用されているすべてのマテリアルをループ処理します。 if mat and mat.name.startswith(material_prefix): マテリアルが存在し、指定したプレフィックスで始まるかを確認します。 結果の表示: print(f"オブジェクト名: {obj.name} に {mat.name} が適用されています。"): 条件を満たす場合、オブジェクト名とマテリアル名をコンソールに表示します。 found_objects = True: オブジェクトが見つかったことを示すためにフラグを更新します。 オブジェクトが見つからなかった場合の処理: if not found_objects: もしオブジェクトが見つからなかった場合、適切なメッセージを表示します。 このスクリプトを使用することで、特定のマテリアルが適用されているメッシュオブジェクトを簡単にリストアップすることができ、Blenderでの作業を効率化することができます。