自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

Googleドライブの棚卸しを楽にする。権限追加・削除を一括で実行するツールを配ってみる。

情シスの仕事をちょっと楽にするためのGoogleドライブ管理ツールを作ってみました。

Googleドライブ管理ツール アイテム検索機能
Googleドライブ管理ツール アイテム検索機能

各機能ごとにコードを書いて解説しても良いのだけど、ここにたどり着いた人はすぐに使えるサンプルを欲しているはず。 ということでスプレッドシートごと公開します。

コピー作成してご利用ください。

Googleドライブ管理ツール_1.1.0 - Google スプレッドシート


検索機能

  • 対象のフォルダIDやクエリを設定して「検索」ボタンを押すと配下のアイテムを検索してスプレッドシート上にリストアップ
  • 権限出力をONにするとどのユーザーが何の権限を持っているかも表示
  • サブフォルダも検索をONにすると対象フォルダの中のフォルダも再帰的に検索して表示
  • 共有ドライブの検索にも対応
  • レジューム機能付きなので大量のファイルがあってもひたすら検索し続ける
  • 🆕ちょくちょく情報漏洩の原因になるGoogleフォームの権限設定を出力する

権限変更機能

  • アイテムID、ユーザー、権限レベルを指定して権限を一括で追加する
  • アイテムID、ユーザー、権限レベルを指定して権限を一括で削除する
  • アイテムID、新オーナーを指定してオーナーを一括で変更する

などの機能が詰め込まれています。使っていてお気づきの点や機能追加のご要望があればコメントかメールでご連絡ください。


  • アイテム検索
    • 設定内容
    • 出力内容
  • 共有ドライブ一覧
    • 出力内容
  • 権限追加
  • 権限削除
  • オーナー変更
続きを読む

Google Apps Scriptを始める時の心得と最初にやってみるべきこと(この記事はGPT-4が書いています)

試すの遅いよという話なんですけどGPT-4にGASに関する記事を書かせてみました。

今回はわりとシンプルなプロンプトで試しています。

あなたはプログラミングに関するブログをやっているITエンジニアです。
以下の仕様に従ってMarkdown形式で記事を書いてください。

"""
# ターゲット

Google Apps Script初心者

# 記事の内容

Google Apps Scriptを始めるときの心得と最初にやってみるべきこと

# 制約事項
- サンプルコードをいくつか紹介すること
- 活用事例をいくつか紹介すること

"""

感想

  • 内容は薄いけど思ったより自然な内容かつウソは言って無さそう
  • 最初の挨拶が冗長かな?w
  • Google Sheets よりはスプレッドシートと言った方が日本人には伝わりやすいかな?
  • サンプルコードを作れるのは良い
  • 画像などは出してくれないので手順がちょっと伝わりづらい

-- 以下 ChatGPT が生成した文章 --

こんにちは、ITエンジニアのチャットGPTです。プログラミングに関するブログを書いています。今日はGoogle Apps Scriptの初心者向けに、Google Apps Scriptを始める時の心得と最初にやってみるべきことを紹介したいと思います。

Google Apps Scriptとは

Google Apps Script(以下、GAS)は、Googleのクラウド上で動作するJavaScriptベースのスクリプト言語です。GASを使うと、Gmail、Google Sheets、Google Docsなど、Googleの各種サービスをプログラム的に操作することが可能になります。

心得1: GASはJavaScriptベース

GASはJavaScriptベースなので、JavaScriptの基本的な文法を理解しているとスムーズに学べます。特に、変数の扱いやループ処理、関数の定義と呼び出しなどは、JavaScriptとほぼ同じです。

しかし、完全な初心者でも大丈夫です。GASはその特性上、単純な操作でも有用なスクリプトを作成できます。

function helloWorld() {
  Logger.log("Hello, world!");
}

このコードは、GASの基本的な機能を利用して、"Hello, world!"というメッセージをログに出力します。

続きを読む

Notion ページをもとにスライドを生成する Wunderpresentation

上記のスライドは以下の記事をスライドに変換したものです。

Notion に書くだけで発表資料が作れるのでライトニングトークなどにピッタリのツール。

Notion ページをもとにスライドを生成するWunderpresentation

wunderpresentation.com


特徴

  • Notion, Torello, Markdown をいい感じにスライドに変換
  • 変換後のスライドはURLが発行されてそのまま共有可能
  • Update で 最新の Notionページ からデータを取得し直せる
  • ライトモード/ダークモードを閲覧者側で自由に切り替え可能
  • 埋め込み用のHTML自動生成
  • アカウント作成不要
  • プレゼン時の自動スクロール機能

続きを読む

APIで取得したJSONをいい感じにスプレッドシートに展開したい

SlackなどのAPIからJSONデータを取得したあとそれをスプレッドシートに展開する場合、オブジェクトのkeyを一個ずつ指定して二次元配列を作ってシートに展開...みたいなことをやっていました。

しかし、いちいちkeyを指定してやるのが面倒だしコードも見やすくはないのでkeyを全てシートの1行目に展開、対応する値を行ごとにセットする方法を考えてみました。

  • やりたいこと
  • ネストされたJSONをテーブルにするため「フラット化」する
  • 今回の肝になる flattenObj 関数
    • SlackAPIのユーザ情報をスプレッドシートに展開してみる
  • 各ステップの解説
    • 配列内のObjectをフラット化
    • 1つ目の配列のkeyをヘッダーとして定義
    • headers をループして生成した配列を body 配列にまとめる
    • headers と body を結合
    • setValues
  • あとがき

 

やりたいこと

画像左のSlackAPIで取得したユーザデータなどをスプレッドシート上にテーブルとして展開したい。

しかも もとのJSONのパターンに関わらず使い回せるように作っておきたい。

f:id:maru0014:20210621215928p:plain

しかし、単純に配列をループしてObject.keysをループしても profile 以下のデータまでループする作りではないので以下画像のとおりオブジェクトのままセットされちゃいます。

えー、じゃあObjectの中のObject.keysもループしてさらに下の...うーん。

f:id:maru0014:20210621215943p:plain

続きを読む

MacroDroidを使ってSESAMEのステータスをワンボタンで確認する

f:id:maru0014:20210526225616p:plain
サクッとステータス確認。80%くらいあると思ったら意外と減ってた。

昨年IFTTTの有料化によって回避策として投稿した記事にて

「セサミのステータス(バッテリー、ロック状態)をウィジェットボタン一つでわかるようなスクリプトは出来るでしょうか?」

とコメントでリクエストを頂いたので作ってみました。

続きを読む