33
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

qnoteAdvent Calendar 2018

Day 11

Googleスプレッドシートのセル内改行

Posted at

はじめに

弊社には現在、怪我療養中の保護猫さんや臨時着任中の派遣猫社員さん達がいらっしゃるのですが、日々のお世話状況をGoogle スプレッドシートに記録したりしています。
このスプレッドシート、便利なのですがスマホアプリから編集しようとしたときにセル内改行の入力方法がわからなかったのでちょっと調べてみました。

PC版とスマホアプリ版の違い

PC版のスプレッドシートでは、Mac/Windowsそれぞれ以下の操作にてセル内改行が入力可能です。

// Macの場合
Command(⌘) + Enter
Control(⌃) + Enter
Option(⌥)  + Enter

// Windowsの場合
Ctrl + Enter
Alt  + Enter

ではスアホアプリではどうやるかというと・・・
残念ながら、アプリでは単純な操作によるセル内改行の入力手段は用意されていないようです。。

Android/iPhoneいずれも、セルの値を編集中に改行を入力しようとEnterキーをタップすると、次のセルにフォーカスが移ってしまいセル内改行を入力することはできません。(PC版でいうEnterキーのみ入力時と同じ動作)

Enterがダメならコピペだ!ということで、まずはAndroidで試してみました。
メモ帳アプリ等から改行を含む文字列をコピーしてきて、それをスプレッドシートに貼り付けてみると
Android_1.png
Android_2.png
Android_3.png
できました!

コピペでいけるなら少し手間が掛かる程度だなーと思いつつ、iPhoneでも試してみたところ
iPhone_1-1.png
iPhone_1-2.png
iPhone_1-3.png
できませんでした。。

色々と試してみた結果、iPhoneアプリではそもそもセル内改行の編集が許容されていないのか、元々改行が入力されていたセルでも編集しようとダブルタップした瞬間に改行が半角スペースに変換され1行の文字列になってしまいました。
iPhone_1-4.png
iPhone_1-5.png

iPhoneでセル内改行してみたい

特に固執する必要はないのですが、iPhoneだけセル内改行を入力できないのは何だか寂しい、、
と思ったので、iPhoneのみでセル内改行は実現できないか、利便性は一切度外視で少し遊んでみました。

CHAR関数を使用

CHAR関数はユニコード表に従って数値を文字に変換した結果を返します。
セル内改行はCHAR(10)で入力可能です。

=”1行目”&CHAR(10)&”2行目”

iPhone_2-1.png

GAS(Google Apps Script)を使用

スクリプトはスマホアプリからは編集できないため、あらかじめPCから設定しておく必要があります。
また、アプリではメニューバーやスクリプト登録済図形からのスクリプト実行が不可能なため、今回はスクリプト実行のトリガーとしてスプレッドシートが編集されたときに実行されるonEdit()を使用しました。
onEdit()の詳細についてはこちら

特定文字を改行文字に変換するスクリプト

セルの値が編集された際、特定文字(下記例では'@')が含まれていた場合は改行文字に変換してセルに再設定するというスクリプトを書いてみました。

function onEdit(e) {
  // 編集されたセルを取得
  var range = e.range;
  // セルの値を取得
  var before = e.range.getValue();
  // '@'を改行文字に変換
  var after = before.replace('@', '\n');
  // 変換後文字列をセルに設定
  range.setValue(after);
}

iPhone_3-1.png
iPhone_3-2.png

メモの内容をセルに設定するスクリプト

スプレッドシートではセルにメモを登録できるのですが、このメモであればiPhoneでも改行を入力することができるので、セルの値が編集された際にメモが設定されていた場合はメモの内容をセルに上書き設定するというスクリプトを書いてみました。

function onEdit(e) {
  // 編集されたセルを取得
  var range = e.range;
  // メモの内容を取得
  var memo = range.getNote();
  // メモが設定されていなければreturn
  if (memo == '') return false;
  // メモの内容をセルに設定
  range.setValue(memo);
  // メモを削除
  range.clearNote();
}

iPhone_4-1.png
iPhone_4-2.png
iPhone_4-3.png

おわりに

セル内改行に限らず、やはりスマホアプリ版のスプレッドシートではある程度できることが制限されるようです。
ただ、恥ずかしながら今回調べてみるまでスマホアプリではスクリプトを実行する手段がないと思っていたのですが、トリガー次第ではスマホアプリでも多少のスクリプト実行できることがわかったのが個人的には収穫でした。

33
8
0

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
33
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?