2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

地方のノンIT界隈サラリーマンがマナビDXで異世界転生並みにスキルチェンジした話

Posted at

昨日の今日で今度はマナビDXクエストで人生変わった話である。

だって待ってても誰も2日目書かないから全然需要のなさそうなお話でお茶濁すけど勘弁してね。

お前だれよ?

46歳非IT系製造業に努める会社員です。

何書くの?

マナビDXクエストに参加したら3年目で人生変わった話よ。

中年の危機に悩む同世代のみんな、生きる道は自分で探そうよ。

エクセルの関数からでもいいよ、今、これを読んでるスマホでもいい、何でもいいから今からでも1歩ずつ階段上がってスキルを手に入れようよ。

マナビDXクエストに参加して、例えばこんなコードが書けるようになったよ。


function getRSSitems(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = ss.getSheets();

  const itemList = [];
  for (let i=0;i<5;i++){
    const values = sheets[i].getDataRange().getValues();
    itemList.push(values);
  }
  const flat = itemList.flat()
  flat.filter(x => x[0] != "");
  console.log(flat);
  return flat
}

function setValues(){

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("conclusion");
  const clearrow = sh.getLastRow();
  sh.getRange(1,5,clearrow,7).clear();
  const setValues = getRSSitems()
  setValues.map(x => x[3].toString().replace(/\r?\n/g, ''))

  const rows = setValues.length;
  const columns = setValues[0].length;

  //セットする座標を取得する。
  const lastRows = sh.getDataRange().getLastRow();
  
  sh.getRange(lastRows+1,1,rows,columns).setValues(setValues);
  sh.getDataRange().removeDuplicates();

  //arrayformulaセットのために、E:K列をクリアする。
  //lastrowを改めて取得する。
  const lastRows_add = sh.getLastRow();
  
  sh.getRange(1,5).setValue('=iferror(arrayformula(split(C1:C,", ")),"")')
  sh.getRange(1,11).setValue('=iferror(arrayformula(date(H1:H,VLOOKUP(G1:G,$N$1:$O$12,2,false),F1:F)),"")')
  
  const allRecords = sh.getDataRange().getValues();
  const setRecors = allRecords.filter(x => x[0] != '');
  sh.getDataRange().setValues(allRecords);
  const row = setRecors.length;
  const sortRange = sh.getRange(1,1,row,11);
  sortRange.sort({column: 11,ascending: false});
  
  
}

スプレッドシートに標準装備されているimportfeed関数で入手したニュース記事をGASでスプレッドシートにテキスト貼り付けして毎日トリガー実行すると、何もしなくても自分のスプレッドシートにニュースがたまっていく仕組みです。
こんな感じ
image.png

なんんちゃってスクレイピングで、それほどコード量も多くなく、可能な限り初心者にわかりやすいように標準関数に仕事をさせるコードも書いてます。

この辺とか。

sh.getRange(1,5).setValue('=iferror(arrayformula(split(C1:C,", ")),"")')
  sh.getRange(1,11).setValue('=iferror(arrayformula(date(H1:H,VLOOKUP(G1:G,$N$1:$O$12,2,false),F1:F)),"")')

こうしたコードはある程度の要望を伝えると生成AIが書いてくれるかもしれません。

ですが、自分はこれを自分で書けるようになりたかった。

最高の学習効果はアウトプットって本に書いてあるよ。

マナビDXクエストに参加すると自主的にスキルを共有する宣言をするとすぐに人が集まったくれます。
自分自身、周囲にICT界隈の集まりに参加できる物理的環境が無いためこれはとてもありがたい。

書いたコードを開陳して、動作を見せて、人から感想をもらう。
何これ超楽しい。

人に教える、伝えるためにはそれそのものを自分のものにしなければなりません。
だから真剣味が違う。

おかげで、標準的な教本には載ってない、受けの良い実務に即したGASコードのアイデアをいろいろと思いつくことができました。

例えば、本記事で紹介したimportfeed関数、記事タイトルだけでも取得してその都度GoogleCalendarの終日イベントとして登録しておけば、カレンダー表示で記事のヘッドラインを集積することができます。

トレンドを追うものの、なかなか俯瞰できない忙しい人には振り返りもかねて使い勝手の良いツールとして重宝するんじゃないでしょうか。

こうした細かいTipsを積み重ねて職場の半径5mで改善活動を続けていた結果、今はこうした改善をもう少し大きなスケールで実行できそうな位置にポジションチェンジすることになりました。

エクセルのIF関数すら覚束なかったころからすると、ちょっと考えられない状況ですが、やりがいと手ごたえを感じる毎日です。

昼は会社員、夜はマナビのメンツと丁々発止。

ワイガヤで生まれた素人コードが仕事のベクトルを変えてくれる、そんな日があなたにも訪れますように。

いつでも待ってるよ!

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?