null
0post
2025.11.21
:0% :0% (30代/男性)
nullに関するポスト数は前日に比べ62%減少しました。女性の比率は5%増加し、本日も30代男性の皆さんからのポストが最も多いです。本日話題になっているキーワードは「null2」です。
人気のポスト ※表示されているRP数は特定時点のものです
【11月30日ヌルになった日から49日の催し開催のお知らせ】
万博記念公園内の国立民族学博物館みんぱくインテリジェントホール(講堂)にて
公式長編記録映画「ぬるぬる」お披露目会 -null²の49日を開催します。
この催しへの参加にはクラファンへの49日リターン申込が必要です。
本日21時より申込受付を開始しました!
https://t.co/15Stp1iBWy
お願い:本催しに関し国立民族学博物館へのお問い合わせはご遠慮下さい。
(お問い合わせには対応いたしかねます)
#null2 #expo2025 #100日後ヌルになるパビリオン #さようならホモサピエンス November 11, 2025
13RP
Notion関数のempty()が進化し、型安全な空の値を返す機能を持つようになりました!これで色々捗る・・・!
・・・
え?どういうこと?という声が、100人中98人ぐらい聞こえますね。
せめて、ギークNotionアンバサダーとして100人中30人ぐらいには伝わるようにちょっとした言語化をしてみます。( 10人行くかな...
さて、Notion数式でただの空を出力したい時、今まで色んなやり方がありました。
数値型に合わせたtoNumber("")、日付型に合わせたfromTimestamp(toNumber(""))、、など無理くり組み合わせてひねり出してきたわけです。
(「型」=プロパティの種類とまずは捉えてOKです。数字だけが入れられる数値プロパティにあいうえおとか入らないすよね。そういうことです。)
これを何故やるのかというと、これをしないと型を固定化することが出来ず、"" ではテキスト型としてNotionに判定されてしまい、フィルターをかける時に、テキストとしてのフィルターしかかけられなくなるからです。
例えば、開始日から10営業日先を計算しその日付を出す数式を作ったとしましょう。(できます)
通常の日付プロパティであれば、今日から一週間以内とか日付に伴ったフィルターがかけられます。
それが、テキスト扱いされてしまうと・・・?
2025年、2025年11月といった固定のテキスト条件でのフィルターしかかけられないわけです。
これは頂けません。「僕らは楽をしたい。」
色々ぶっ飛ばしてどういうことかというと毎週、毎月、毎年、メンテナンスをしないといけない仕組みが出来上がる。これは仕組みといえない。めんどくせーって話です。
これを避けて日付フィルターがかけられる仕組みとして作るためにやっていたのがfromTimestamp(toNumber(""))でしたよというお話。
ところがどっこい。
オートメーションやらボタンやらユーザープロパティなどの「型」を意識しないと行けない場合、乗り越えられない状況というのが存在します。
何度かアンバサダーSlackでも提案してますが、toUser()などが存在したらユーザー型の空をtoUser("")で表現出来たわけですが、今のところこんな関数は存在せず、ユーザー型のみしか受け付けないプロパティに対して「ユーザーor空」が返る数式をどうしたらええねんとなっておりました。常に値が入ることなんてなかったりするのでね。
この状況を!解決!するのが!
Superリニューアルした empty() 🆕
空=空白を返したい。どんな状況でもempty()を使いましょう。それで概ね大体ほぼほぼ解決するはずです。
エンジニア的に言ったら、User?みたいなnull許容型的な振る舞いをさせる返り値がempty()を使うことによって実現出来るという認識を持つとスムーズですが、謎挙動でもあります。
と、謎のテンションでお届けしましたが、ちょっとでも面白がって頭に入ってくれたらいいなーという気持ちでですね、普段スーパーローテンションの熊倉による解説でした。
なお、この時代錯誤な手打ちです。
それぐらい、今までのどうしたらいいんだっていうんだよっていう制約が取れた超絶地味なのに要石のような一手、アプデがこれでした。ということですので、ご認識、ご周知のほどよろしくお願いいたします。
最後まで読んでいただいたらいいねをお願いします。
100人中10名に届かないだろう内容なので、いいねをお願いします。
マニアック過ぎて100人にも届かないか。。
というわけで、年に一回あるかどうか分からない熊倉劇場でした。あざした。 November 11, 2025
1RP
本日20時から、月見🐤ピヨリでP.E.P.Oやります!
ムムチ(#mumuchi666)とヌル君(#0Null0283)だよ🍀
さて、前回のREPO見た方は分かる通り、常にほぼ最初に居なくなり続けてました。
今回はどうなるか…?!😎✨
#REPO
https://t.co/35UJOtG4YP November 11, 2025
1RP
【Androidアプリを4.1.6にバージョンアップしました】 次の変更を行いました。
・Target API35に移行
・電源ONの時に「nullを記録しました」という通知が出る不具合を修正
・ログ取得の拡充 November 11, 2025
1RP
支援に成功した…
null²の49日に行けることになりました。
フォローさせて頂いてるかたがたのツイート見なかったらメールにすら気づかなかった…ありがとうございました!
#null2 https://t.co/wqJbSkDI82 November 11, 2025
1RP
#乃木フェス8周年をお祝いしよう -is:nullcast since:2025-11-17_13:00:00_JST until:2025-12-06_23:59:59_JST November 11, 2025
// =================================================================
// ⚙️ 設定(ここを変更してください)
// =================================================================
const API_KEY = "YOUR_YOUTUBE_DATA_API_KEY"; // ⚠️【必須】取得したAPIキーを設定してください
const SHEET_NAME = "YouTubeコメント結果"; // 結果を出力するシート名
const URL_INPUT_CELL = "A1"; // 動画URLが入力されているセル (例: "A1")
const MAX_COMMENTS_TO_EXTRACT = 60; // 抽出するコメントの最大件数 (最大60件)
// =================================================================
// 🔰 カスタムメニューの作成 (使いやすさ向上)
// =================================================================
/**
* スプレッドシートを開いたときにカスタムメニュー「コメント抽出」を追加します。
*/
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('コメント抽出')
.addItem('URLからコメントを抽出 (最大60件)', 'extractCommentsFromUrl')
.addToUi();
}
// =================================================================
// 🚀 メイン処理:実行時にこの関数が呼び出されます
// =================================================================
/**
* ➊ 指定セルからURLを読み込み、動画IDを取得し、コメント抽出と書き出しを実行します。
*/
function extractCommentsFromUrl() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ui = SpreadsheetApp.getUi();
const sheet = ss.getSheetByName(SHEET_NAME) || ss.insertSheet(SHEET_NAME);
// 1. URLの読み込み
const url = ss.getRange(URL_INPUT_CELL).getValue();
if (!url) {
ui.alert("⚠️ エラー", `セル ${URL_INPUT_CELL} に抽出したい動画URLを入力してください。`, ui.ButtonSet.OK);
return;
}
// 2. 動画IDの抽出
const videoId = getVideoIdFromUrl(url);
if (!videoId) {
ui.alert("⚠️ エラー", "有効なYouTube動画URLではありません。URLの形式を確認してください。", ui.ButtonSet.OK);
return;
}
// 3. コメントの取得 (APIコール)
// - ここで最大60件のデータとヘッダーを取得
const comments = fetchComments(videoId);
// 4. 結果の書き出し
writeCommentsToSheet(sheet, comments);
}
// =================================================================
// ⚙️ ヘルパー関数:URLから動画IDを抽出
// =================================================================
/**
* ➋ YouTube URL(短縮URLや埋め込みURLなども含む)から動画IDを抽出します。
* @param {string} url 動画URL
* @returns {string|null} 動画ID (11桁の英数字)、または抽出できなかった場合はnull
*/
function getVideoIdFromUrl(url) {
// 動画IDを特定する正規表現。様々なURL形式に対応。
const regex = /(?:youtube\.com\/(?:[^\/]+\/.+\/|.*[?&]v=)|youtu\.be\/|y2u\.be\/)([^"&?\/\s]{11})/;
const match = url.match(regex);
return match ? match[1] : null;
}
// =================================================================
// ⚙️ ヘルパー関数:YouTube Data APIによるコメント取得
// =================================================================
/**
* ➌ YouTube Data APIを呼び出してコメントを取得し、最大件数に制限します。
* @param {string} videoId 動画ID
* @returns {Array<Array<string|number>>} 抽出したコメントデータ
*/
function fetchComments(videoId) {
const allComments = [];
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 1. ヘッダー行を追加 (1行目)
allComments.push(["コメント内容", "投稿者名", "高評価数", "公開日時", "コメントID"]);
// 2. APIリクエストURLの構築
// maxResults=100 はAPIの最大値。効率的にコメントを取得するためです。
const apiUrl = `https://t.co/m0JKWIISqc${videoId}&key=${API_KEY}&maxResults=100`;
try {
// 3. APIコールの実行
const response = UrlFetchApp.fetch(apiUrl);
const data = JSON.parse(response.getContentText());
// 4. JSONデータを解析し、コメントを抽出
data.items.forEach(item => {
const snippet = item.snippet.topLevelComment.snippet;
const publishedAt = Utilities.formatDate(
new Date(snippet.publishedAt),
ss.getSpreadsheetTimeZone(),
"yyyy/MM/dd HH:mm:ss"
);
// [コメント内容, 投稿者名, 高評価数, 公開日時, コメントID] の順に配列に追加
allComments.push([
snippet.textDisplay,
snippet.authorDisplayName,
snippet.likeCount,
publishedAt,
https://t.co/olt65Z0pHi
]);
});
} catch (e) {
SpreadsheetApp.getUi().alert("⚠️ APIエラー", `コメント取得中にエラーが発生しました。\nAPIキーやクォータ制限を確認してください。\nエラー内容: ${e.message}`, SpreadsheetApp.getUi().ButtonSet.OK);
Logger.log(e);
}
// 5. 取得したコメントのリストを、最大件数(60件 + ヘッダー1行)に制限
// allComments.lengthが61より大きい場合、slice(0, 61)で61行にカットします。
if (allComments.length > MAX_COMMENTS_TO_EXTRACT + 1) {
return allComments.slice(0, MAX_COMMENTS_TO_EXTRACT + 1);
} else {
return allComments; // 60件以下ならそのまま返す
}
}
// =================================================================
// ⚙️ ヘルパー関数:スプレッドシートへの書き出し
// =================================================================
/**
* ➍ 取得したコメントデータをスプレッドシートに書き出し、整形します。
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet 出力先のシートオブジェクト
* @param {Array<Array<string|number>>} comments コメントデータ
*/
function writeCommentsToSheet(sheet, comments) {
// 既存データをクリア
sheet.clearContents();
// コメントが取得できなかった場合の処理 (ヘッダー行のみの場合)
if (comments.length <= 1) {
sheet.getRange(1, 1).setValue("コメントが見つからなかったか、APIの制限により取得できませんでした。");
return;
}
// データを出力
sheet.getRange(1, 1, comments.length, comments[0].length).setValues(comments);
// 見やすいように整形
sheet.setColumnWidth(1, 400); // コメント内容の列幅を広く
// ヘッダー行を太字・色付け
sheet.getRange(1, 1, 1, comments[0].length).setFontWeight("bold").setBackground("#c9daf8");
// 完了メッセージ
SpreadsheetApp.getUi().alert("✅ 完了", `${comments.length - 1}件(最大${MAX_COMMENTS_TO_EXTRACT}件)のコメントをシート「${SHEET_NAME}」に出力しました。`, SpreadsheetApp.getUi().ButtonSet.OK);
} November 11, 2025
null 山Pストリー投稿ありがとう🤗新曲配信リリースおめでとうございますございます😊
今日も何度も聴きました。素敵な曲ありがとう。♪♬♪ https://t.co/uEhemg9K25 November 11, 2025
女子医よりはイイ
逆に理科が不安
久留米の方が得点率上げなきゃいけない感じだからどうしたもんかなぁ…
#querie_nullmayu_2
https://t.co/RRpgTT5vuM November 11, 2025
@omchiikawa0803 返信逃しててごめん😭
コラボでガチャ回した人は多い気がする〜!
エリオスもたまに課金ランキングみたいなの入ってるから人気かなと🤔
MV本当に良かったよね!私も薫くんばっかり見ちゃった🫣
体調不良は治ったかな?nullガチャ私も10連と5連で皆来て2凸はした🥰
お互い出て良かった👏 November 11, 2025
7割ですね、久留米はいい意味でも悪い意味でも面接小論で差つかないから筆記勝負ですよね
ありがとうございます
#querie_nullmayu_2
https://t.co/PBEHoai7Bs November 11, 2025
<ポストの表示について>
本サイトではXの利用規約に沿ってポストを表示させていただいております。ポストの非表示を希望される方はこちらのお問い合わせフォームまでご連絡下さい。こちらのデータはAPIでも販売しております。









