Save 37% off PRO during our Black Friday Sale! »

最近のGASのアプデの話をしよう

 最近のGASのアプデの話をしよう

8d80af14296180866264212adbfb587e?s=128

godan

June 24, 2020
Tweet

Transcript

  1. 最近のアプデの 話をしよう 株式会社ガイアックス ソーシャルメディア事業部 Godan.m

  2. Godan.m Twitter: @godan09 株式会社ガイアックス ソーシャルメディアマーケティング事業部所属 肩書はエンジニア 最近は動画や配信業がメイン 技術ツイートより料理ツイートが 伸びるのが最近の悩み 去年はAppMakerとGASを会計業務周りで

    半年以上やってました
  3. 最近同人誌を出しました グッドバイ アップメーカー booth.pm またはbookwakerで300円です! 自称AppMaker界隈最期の入門書です。 買っても良いことはないと思います。

  4. さて


  5. 最近皆様
 GASのアップデートは
 追っていらっしゃいますか?


  6. None
  7. 祝 V8正式対応


  8. 今日はこの話をしません


  9. \気になる方はこちら/
 いつも隣にITのお仕事 https://tonari-it.com/gas-v8-runtime/

  10. 今日はこっち


  11. Simple Trigger: onSelectionChange(e)

  12. この話をしたかったのですが…


  13. この話をしたかったのですが…


  14. Drawing Class

  15. DrawingClass - 今年4/2に追加された スプレットシートサービスのクラス - スプレットシート上の図形を操作、削除できる

  16. DrawingClass - 実装されているメゾット getContainerInfo() getHeight() getOnAction() getSheet() getWidth() getZIndex() remove()

    setHeight(height) setOnAction(macroName) setPosition(RowPos, ColPos, x, y) setWidth(width) setZIndex(zIndex)
  17. とりあえず使ってみる

  18. 本日のサンプルは 明日辺りに公開します

  19. シート上の図形をログに書き出す function printDrawingClass() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); Logger.log(drawings) }

  20. シート上の図形をログに書き出す

  21. 図形のサイズなどを取得する function printDrawSize() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 縦(pixels) Logger.log(drawings[0].getHeight())

    // 横(pixels) Logger.log(drawings[0].getWidth()) // 重なり順(数字が大きいものほど手前になります ) Logger.log(drawings[0].getZIndex()) // 設置されてるシート名 Logger.log(drawings[0].getSheet()) }
  22. 図形のサイズなどを取得する

  23. 図形の位置を取得する function printDrawPosition() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 設置されている列番号 Logger.log(drawings[0].getContainerInfo().getAnchorColumn())

    // 設置されている行番号 Logger.log(drawings[0].getContainerInfo().getAnchorRow()) // 設置されているセルの左上からどれだけx軸で離れているか(pixcel) Logger.log(drawings[0].getContainerInfo().getOffsetX()) // 設置されているセルの左上からどれだyy軸で離れているか(pixcel) Logger.log(drawings[0].getContainerInfo().getOffsetY()) }
  24. 図形の位置を取得する

  25. 図形の位置を取得する function moveFigure() { const drawings =SpreadsheetApp.getActiveSheet().getDrawings(); // 高さと横幅変更[ drawings[0].setWidth(200)

    drawings[0].setHeight(200) // 場所変更 drawings[0].setPosition(4, 4, 200, 200) }
  26. 図形の位置とサイズを変える

  27. 図形の位置とサイズを変える

  28. 図形の位置とサイズを変える

  29. 結構シンプルな作り

  30. 図形の追加や複製はできない (やり方を知ってる方いたら教えて下さい )

  31. 今後の追加を楽しみにしましょう

  32. Drawing 活用法

  33. 正直活用しづらい…

  34. 作例1. 重い処理中データが触れないようにする

  35. 重い処理中データが触れないようにする function coverCell() { const drawings = SpreadsheetApp. getActiveSheet() .getDrawings();

    // 高さと横幅変更[ drawings[0].setWidth(1920) drawings[0].setHeight(1080) // 場所変更 drawings[0].setPosition(1, 1, 0, 0) // … 処理後 … // 高さと横幅変更 drawings[0].setWidth(1) drawings[0].setHeight(1) // 場所変更 drawings[0].setPosition(1, 1, 0, 0) }
  36. 重い処理中データが触れないようにする

  37. 重い処理中データが触れないようにする

  38. 重い処理中データが触れないようにする

  39. 重い処理中データが触れないようにする function coverCell() { const drawings = SpreadsheetApp. getActiveSheet() .getDrawings();

    // 高さと横幅変更[ drawings[0].setWidth(1920) drawings[0].setHeight(1080) // 場所変更 drawings[0].setPosition(1, 1, 0, 0) // … 処理後 … // 高さと横幅変更 drawings[0].setWidth(1) drawings[0].setHeight(1) // 場所変更 drawings[0].setPosition(1, 1, 0, 0) } ちなみに0を指定すると 450px x 325pxになる
  40. 作例2. 重い処理中データの進捗バー

  41. プログレスバーを作る - 枠線を使う場合は想定される縦 横比を使う - 枠線使わなくていいなら使わな いほうが楽です

  42. プログレスバーを作る function progressbar() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const width

    = 500 const Height = 100 const drawings = spreadsheet.getSheetByName('進捗バー ').getDrawings() window = drawings[0] progress = drawings[1] // 初期化 window.setHeight(Height) window.setWidth(width) window.setPosition(1, 1, 0, 0) progress.setHeight(100) progress.setWidth(1) // \進捗ゼロ!/ progress.setPosition(1, 1, 0, 0) for(var i = 1; i <= 100; i++){ progress.setWidth((width/100) * i) } }
  43. プログレスバーを作る

  44. ループ内で描画を繰り返せば アニメーションになる…?

  45. 位置が取れて

  46. 処理に合わせて位置を変更できる

  47. ・・

  48. ・・・

  49. ゲームが
 作れるのでは?


  50. None
  51. デモ


  52. ・・

  53. ・・・

  54. Unityを
 使おう


  55. Unityを
 使おう