🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1404閲覧

Google Apps Scriptで空白ではない先頭列の番号を取得する

vpp.ysk

総合スコア10

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/12/07 02:40

スプレッドシートでシフト表を作成しているのですが、
現状、別の勤怠管理システムに始業時刻を打ち込む作業をしています。

始業時刻の一覧を出力できれば、一括登録ができるため、Google Apps Scriptを活用して、
シフト表から必要事項の一覧表を作成したいと考えております。

以下画像のようなイメージなのですが、現在、「開始時刻」を取得する部分で行き詰まっています。
イメージ説明
イメージ説明

シフト表(1番目の画像)には、「AAAA...」や「BBBB...」のように、その日の業務がガントチャートとして入っているので、
値が入っている先頭列の番号を取得できれば、その列番号を元に開始時刻を取得できるかと考えているのですが、
具体的なやり方がわからないため、アドバイスいただきたいです。

また、スタッフ数=行数が多いため、繰り返し処理が多くなると時間がかかってしまうという懸念もあり、
なるべく処理が簡潔な方法だと助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

###回答
ぱっと思いつくのは、下記の流れです。
1.シフトAの次の列からX方向にセルの値をチェックする.
2.文字列が現れたら、そのセルの列番号を取得する.
3.文字列が現れた時点で、処理終了.

1行のループ回数は空白セルの数です。
(for文のループ回数上限は適当でいいと思います。文字列が現れたら処理終わるので.)

以下の画像のようなセルの状況で、開始列番号を取得するプログラムを作りました。
イメージ説明
以下の画像の通り、列番号取得できてます。
イメージ説明

プログラムは以下の通りです。

gas

1function shiht() { 2 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var sheet = spreadsheet.getActiveSheet(); 4 var col = 0; 5 var row = 0; 6 var value=""; 7 8 //開始列番号は空白セルの始まりの列(始まりの列は全行、同じだと思うので) 9 //ループ回数はシフト表の空白セルの最大数以上を指定(適当に20にしました.) 10 for(var i = 4; i <= 20; i++) { 11 if(sheet.getRange(1,i).getValue() != ""){ 12 //文字が出現したら、列番号を取得して、break! 13 value=sheet.getRange(1,i).getValue() 14 col=i 15 row=1 16 break; 17 } 18 } 19 Browser.msgBox("文字列:"+value+"\n開始列番号:"+col+"列目"); 20}

以上です。

投稿2019/12/07 03:47

KazuSaka

総合スコア640

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vpp.ysk

2019/12/07 05:06

早速のご回答ありがとうございます。 プログラムを参考にさせていただき、実装したかった処理が実現できました!
KazuSaka

2019/12/07 06:49

よかったです! 頑張ってください!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問