質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

解決済

1回答

898閲覧

GAS URL作成時に複数の行の情報を入れる方法

ribonyarou

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

0クリップ

投稿2022/06/28 01:31

自力で調べていますが手詰まりしておりまして、もし分かる方がいらっしゃいましたらご教授お願いします。

〔質問タイトル〕
GoogleスプレッドシートでURLを作成時に複数の行情報を入れる方法

〔相談内容〕
備品管理用のGoogleスプレッドシートが公開されておりましたのが、少し改良して使いたいと考えております。

追加したい点は、読み込み時に更に情報を載せたQRを作成したいと考えています。
おそらく /"&$B$1&"/ の部分がQR(URAL作成)に反映されていると思いますが…
更にH行の購入金額やJ行の備考等が含まれたURLの作成が出来ればと思っています。

どうぞ、宜しくお願い申し上げます。

〔コード〕
function bihinlabel(){
var sht = SpreadsheetApp.getActive().getSheetByName('固定資産');
var lastRow = sht.getLastRow();
for (var i=3; i<=lastRow; i++) {
sht.getRange(i, 3).clear();
sht.getRange(i, 4).clear();
var qrc1 = '="https://script.google.com/macros/s/\"&$B$1&\"/exec?no=\"&A' + i;
var qrc2 = '=image("https://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=\"&C' + i +')';
sht.getRange(i, 3).setValue(qrc1);
sht.getRange(i, 4).setValue(qrc2);
}

イメージ説明

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

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

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

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

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

k_code

2022/06/28 06:33

どういった点で不明なのでしょうか? エラーなのでしょうか?(出ないとは思いますが)はたまた何かが足りないのでしょうか? このコードに関しては、スプレッドシートに追記する必要があるのかどうかもわかりません。 意図等いただければ力添えできるかもしれませんので、返信よろしくお願いします。
ribonyarou

2022/06/28 07:00

k_codes様 ご返答ありがとうございます。 はい。仰る通り、上記で実行した場合、エラーは出ません。 ここから改良したく考えております。 現状このGASを実行しますと、B行(備品名)の情報のみ持ったURL(+QRコード)が発行される仕組みとなっておりまして、それに他の行(Gの型番やJの備考)の情報も加えてURL(+QR)の発行が出来ればと模索しております。 稚拙な説明で申し訳ありません。ご助力いただけると幸いです。
k_code

2022/06/28 07:15

追加で質問させていただきます。 間違っているかもしれませんが、現在ちらっと見えている 7行目にて使用されている変数qrc1についてですが、 どういったスクリプトを組まれているのでしょうか? 情報が少なく、どうしても憶測でしか話ができませんが、何か別のサイト(GASにて作成された)にて備品等のものを確認するものなのでしょうか? できればで構わないのですが、参考にされたURL等貼っていただけると幸いです。
k_code

2022/06/29 00:13 編集

返信が遅くなり申し訳ありません。 結論から申し上げますと、このコードに関しては作成あるいは修正が必要ないかと思われます。 実際私もテストしてみたのですが、必要なのはこのコードではなく、もう一つのスクリプト でhtmlに関して記載のある[doGet]で始まるスクリプトの修正が必要かと思います。(挙げていただいた動画で作成されていられるのでしたら『デプロイ』をしたものかと) これに関しましては以下のURLを参照していただければと思います。 https://tonari-it.com/gas-url-doget-parameter/
ribonyarou

2022/06/29 00:58

k_code様 お世話になります。 とんでもないでざいません、無知な私にご返信くださるだけでも感謝申し上げます。 確かに、別のスプリクト(下記コード)にdoGet関数がありました。 頂きました、情報を参考に勉強させていただきます。 function doGet(e) { var no = e.parameter.no; var datetime = new Date(); var today = Utilities.formatDate(datetime,'JST', 'yyyy/MM/dd'); var userid = Session.getActiveUser().getEmail(); var sht = SpreadsheetApp.getActive().getSheetByName('固定資産'); var lastRow = sht.getLastRow(); const values = sht.getRange(3, 1, lastRow - 2).getValues().flat(); var r = values.indexOf(no) + 3; sht.getRange(r, 5).setValue(datetime); sht.getRange(r, 6).setValue(userid); return ContentService.createTextOutput(today + "\n" + sht.getRange(r, 2).getValue() + "\n" + userid); }
k_code

2022/06/29 02:36

最後にもう一点だけ質問させていただいて、回答に移りたいと思うんですが、必要なデータはどれでしょうか? 質問の通りH列J列だけを追加ですか?
ribonyarou

2022/06/29 02:48

k_code様 お忙しい中、ご質問ありがとうございます。 QRを読み込んだ時に表示したい行はA行の備品code・B行の備品名・G行の型番となります。 ※現在はB行の備品名のみが表示されます(+日付と読み取り者のID)
guest

回答1

0

ベストアンサー

ribonyarouさんの意見を取り入れさせてもらい、回答させていただきます。
今回のコードの場合、C列(URLがある列)は必要ないかと思いますので削除していただいて構いません。(残しても大丈夫かと思いますが)
また、今回のコードはすべてC列を削除した場合のコードで書いています。
ほかにも注意点として以下に2つのコードを記載しますが、別々に作成してください。(作成しないとデプロイIDが記載できません。)
以下のコードはQRコードを表示させる用のデータです。

//QRコードを表示させる用のコード const deployID = "もう一つのコードをデプロイして得られたデプロイIDを記載" var sht = SpreadsheetApp.getActive().getSheetByName('固定資産'); function bihinlabel(){//質問中のコード var lastRow = sht.getLastRow(); sht.getRange(3,3,lastRow-2,1).clear();//ここで範囲をクリアする for (var i=3; i<=lastRow; i++) { var qrc1 = 'https://script.google.com/macros/s/'+deployID+'/exec?no='+i //行番号をNoとして格納しておく var qrc2 = '=image("https://chart.apis.google.com/chart?chs=250x250&cht=qr&chl='+qrc1+'")';//QRコードを作成 sht.getRange(i,3).setValue(qrc2);//QRコードをC列に表示(D列の場合は(i,3)を(i,4)にする) }; }

続いてQRコードを読み込んだ際のデータです。
このコードはまた新しいGASにて記入・デプロイしてください。

function doGet(e) { const shtURL = "スプレッドシートのURLを記載" const sht = SpreadsheetApp.openByUrl(shtURL).getSheetByName('固定資産'); const Row = e.parameter.no//URLに格納された行番号を取得 const today = Utilities.formatDate(new Date(),"Asia/Tokyo","yyyy/MM/dd");//今日をOOOO年OO月OO日の形で取得 let observer = Session.getActiveUser().getEmail();//QRコードを読み取った人のIDを取得 if(!observer){//Chromeなどが使用されていないときはメールアドレスが取得できない(iPhoneSafariなど)ため、見つからない場合は不明と記載する observer = "不明です。" } const Data = sht.getRange(Row,1,1,10).getValues();//QRコードがある行一列分のデータを取得 const EquipmentID = Data[0][0];//行の一列目(A列)を取得 const EquipmentName = Data[0][1];//行の二列目(B列)を取得 const EquipmentModel = Data[0][5];//行の6列目(F列)を取得 sht.getRange(Row,4,1,2).setValues([[today,observer]])//日付・読み取った人のメールアドレスをシートに記載 let html = '';//HTMLで画面に表示 html += '<h1>備品内容</h1>'; html += `<p><h2>備品ID: ${EquipmentID}</h2></p>`; html += `<p>備品名: ${EquipmentName}</p>` html += `<p>型番:${EquipmentModel}</p>` return HtmlService.createHtmlOutput(html); }

私の使用環境では稼働できることが確認できています。
もし何かわからない際は返信していただけると幸いです。

追記:
何度も修正して申し訳ないです。

投稿2022/06/29 04:08

編集2022/06/29 04:15
k_code

総合スコア20

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

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

k_code

2022/06/29 04:24

また、一番上のデプロイIDを削除したい場合は、一つ目のコードにあるgetRangeメソッドの中身の一番初めの部分(行指定)を-1すれば、変更可能です。
ribonyarou

2022/06/29 05:18

k_code様 お世話になります。 お忙しい中、ご回答頂きありがとうございます。 ご教授いただきましたコードを反映させた結果、希望通りの表示になりました。 また、ご丁寧に教科書のような解説も入れてくださり感謝申し上げます。 これがあれば多少のカスタムは自力で行うことが出来ます。 本当に感謝申し上げます。 ベストアンサーは当然させていただきます。 重ねて感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問