X



【MACRO】Google Apps Script 質問スレ【DRIVE】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0459デフォルトの名無しさん垢版2018/02/10(土) 06:53:00.00ID:C1kfYYFU
1日1回、UrlFetchでページネイションされた数十ページを取得したいのですが
負荷軽減のため数秒は間隔を明けて取得したいです

settimeoutでエラーがでるのは、GASでは使えないということなのでしょうか?
出来ないとしたら代替方法の検索のヒントなどを教えていただきたいです
0462デフォルトの名無しさん垢版2018/02/13(火) 22:38:42.10ID:wCW429If
>>459
setTimeoutはブラウザでしか効かないんじゃ
Utilities.sleep(ミリ秒)使おう
0463デフォルトの名無しさん垢版2018/02/13(火) 22:39:52.24ID:wCW429If
>>458
非表示じゃダメなの?
0465デフォルトの名無しさん垢版2018/02/14(水) 12:43:37.10ID:qm6gWFGH
>>460
>>461
良し悪しはわからないけど

for (var n in datas) {
var data = datas[n];
...
}

とかしてた
0466デフォルトの名無しさん垢版2018/02/14(水) 16:40:58.15ID:rMSOrK/H
datum
0467デフォルトの名無しさん垢版2018/02/16(金) 06:23:37.77ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0468デフォルトの名無しさん垢版2018/04/06(金) 09:46:20.39ID:OGpTmhME
すみません、ちょっとお門違いなんですが、
Microsoft系でGoogle Apps Scriptに相当するようなサービスって何でしょうか?
0469デフォルトの名無しさん垢版2018/04/06(金) 12:08:48.32ID:sTfZcU1Y
OneDrive
0472デフォルトの名無しさん垢版2018/04/08(日) 11:45:51.95ID:YK+KPtHu
Python for Excel
0473デフォルトの名無しさん垢版2018/04/08(日) 12:44:04.55ID:x+tHn1VY
Google Spreasheetみたいにクラウドに置いたときに、
定期的に動かしたり、Webアプリとして呼び出せたりするんでしょうか?
0475デフォルトの名無しさん垢版2018/04/27(金) 12:00:12.58ID:DjfFcydV
できる
0478デフォルトの名無しさん垢版2018/04/27(金) 17:49:08.26ID:ash3pEtl
>>476
多分このスレの上の方に書いてある
0479デフォルトの名無しさん垢版2018/04/30(月) 09:57:45.45ID:OTdR2Ule
スプレッドシートでハイパーリンクになっていないセルの、テキストとURL取得するには、どうすれば良いですか?
0480デフォルトの名無しさん垢版2018/04/30(月) 21:10:05.12ID:k1zO9vV2
>>479
ハイパーリンクになってないならできない
そもそもセルにurlがvalueとして入力されてるなら別だが
0481デフォルトの名無しさん垢版2018/05/13(日) 17:28:07.61ID:T6Bs0Y7u
しょうもない質問ですが職場などで何て呼んでるでしょうか

ジーエーエス?
グーグルアップス?

こないだガスって言ってる人がいて自分の職場では全く統一されていないです
0482デフォルトの名無しさん垢版2018/05/13(日) 20:20:04.93ID:j+nJMGjP
>>481
ガスって呼んでる
??ってなる人には「Google Apps Scriptの略」って付け加える
0484デフォルトの名無しさん垢版2018/05/14(月) 13:31:22.77ID:dnGRWxRE
>>481
ぎゃす
0485デフォルトの名無しさん垢版2018/05/23(水) 19:22:31.65ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

WX5I9
0487デフォルトの名無しさん垢版2018/05/25(金) 01:08:25.88ID:9upiSQGW
<HEAD>タグの中に文字コードの設定<meta charset= がある場合は、文字コードを抜き出すプログラムを組んでいます。(下記の関数)


function getEntag(response){
var myRegexp = /<HEAD>([\s\S]*)<\/HEAD>/gi;
var elems = response.getContentText().match(myRegexp);
var myEncode = /<meta charset="(.+?)">/gi;
var myEncodeR = elems.getContentText().match(myEncode); // ←この行でエラーが出る
return myEncodeR;
}


エラーの内容
TypeError: オブジェクト「文字列文字列文字列文字列文字列」で関数 getContentText が見つかりません。


なぜ
response.getContentText().match(myRegexp);
はうまくいくのに
var myEncodeR = elems.getContentText().match(myEncode);
はうまくいかないのでしょうか?
0488デフォルトの名無しさん垢版2018/05/25(金) 03:33:33.31ID:JRXZZDGl
elems[0]
0489デフォルトの名無しさん垢版2018/05/25(金) 08:23:06.06ID:GbGPTGD4
GASでpdfを作成したいと思い
サイトを参考に出せるようになったのですが
余白の設定オプションを教えていただけないでしょうか?

exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
size: "A4", // 用紙サイズの指定 legal / letter / A4
portrait: "true", // true → 縦向き、false → 横向き
fitw: "true", // 幅を用紙に合わせるか
sheetnames: "false", // シート名をPDF上部に表示するか
printtitle: "false", // スプレッドシート名をPDF上部に表示するか
pagenumbers: "false", // ページ番号の有無
gridlines: "false", // グリッドラインの表示有無
fzr: "false", // 固定行の表示有無
ここら辺のオプションワードをつけてGoogle検索して見たのですが見つからないでいます
よろしくおねがいいたします
0490デフォルトの名無しさん垢版2018/05/25(金) 09:48:46.51ID:JEsKWWiQ
google apps script pdf margin
でググったらstackoverflowとかヒットするけど見てみた?
俺は見てないけど。
0491デフォルトの名無しさん垢版2018/05/25(金) 13:10:56.83ID:zfLEVsZm
日々の記録をgoogle apps script で記録してたんだが1ヶ月忙しくて
記録の確認してなかったら先月4月26日以降の記録が取れてなかった
プロジェクトを動かすと「承認が必要です」で前もやったことがあるような
画面がでて一つ一つのプロジェクトを自動実行させるために承認設定をした
100ぐらいプロジェクトがあるんだが一つ一つを手作業で承認させるのが
大変だし前もこんなことをさせられた記憶があるんだが
承認を一回で全てのプロジェクトを設定する方法とかないですかね?
0492デフォルトの名無しさん垢版2018/05/25(金) 16:14:05.22ID:XO9fqtgP
っていうかしばらくしたらまた承認求められそうでこわいな
0493デフォルトの名無しさん垢版2018/05/26(土) 08:10:21.44ID:hhovu7qg
>>490
ありがとうございます
設定することができました!
0494デフォルトの名無しさん垢版2018/05/27(日) 18:16:43.31ID:AVKJ/EkR
google apps scriptでLZHを解凍したいと思っています。
以下のどちらかのコードはGASでも使用可能でしょうか?
又は、ほかに何か良い方法があるでしょうか?

ttps://github.com/erlandranvinge/lh4.js/tree/master
ttp://formats.kaitai.io/lzh/javascript.html

現在1つのテキストファイルが圧縮されたzipのblobを、
Utilities.unzip
で解凍し、中のテキストファイルを利用しているのですが、
LZHでも同じ事ができるようにしたいと考えています。

上記ページのサンプルは見たのですが、
DOMが全く分からず、javascriptの理解も浅いため、
どう書けばよいのかわかりませんでした。
LZHのblobから解凍されたファイルのblobが得られれば理想的です。
アドバイスお願いしますm(_ _)m
0495デフォルトの名無しさん垢版2018/06/01(金) 18:16:54.34ID:zHSboa0n
質問です
色んなサイトを見ながら、Google spread sheetにスクリプトを作成しました
このスクリプトを外部アプリから実行するにはどうすれば良いのでしょうか。

ちなみに外部アプリとはDiscordの事です。
0496デフォルトの名無しさん垢版2018/06/01(金) 18:21:14.88ID:Wbxpqrec
オレオレAPIをくっ付ける
0498デフォルトの名無しさん垢版2018/06/01(金) 21:11:40.39ID:xvkHhoxN
doGetかdoPost作ってHTTPで呼べばいいじゃない
0499デフォルトの名無しさん垢版2018/06/02(土) 12:34:27.24ID:yUEJ+BJS
djangoみたいなdispatcherとかroutingの仕組みないかな
0500デフォルトの名無しさん垢版2018/06/13(水) 21:43:33.53ID:KouNon+v
お手軽WebAPI作るときデバッグどうしてる?
デバッグ用URLではHTTPリクエスト受け付けてくれないでしょ?

リリース用URLじゃLogger使えないし
コード変えてバージョン上げずに更新しても変更反映してないから
バージョンだけが無駄に上がってく

いい方法教えてください
0501デフォルトの名無しさん垢版2018/06/14(木) 09:56:45.68ID:b+x6hMO7
デバッグ用のアカウント作って
そっちからアクセスしたらデバッグモードで動くように作る
0502デフォルトの名無しさん垢版2018/06/15(金) 20:11:23.83ID:EMcl4RB2
> そっからアクセスしたら
これは別アカに共有かけてそっちで開発し
リリース段階で本アカで更新ってこと?
0503デフォルトの名無しさん垢版2018/06/16(土) 06:04:47.49ID:xpvZKcIC
へ?
デバッグするときのクライアントのアカウントだよ
0504デフォルトの名無しさん垢版2018/07/04(水) 22:17:45.27ID:gFgZc5FG
PYT
0505デフォルトの名無しさん垢版2018/07/05(木) 12:09:59.99ID:6iN0hdr0
なんだこいつ
0506デフォルトの名無しさん垢版2018/07/09(月) 17:33:54.99ID:se1rYzUR
スプレットシートの中身をWEB経由でJSON形式で出力しているんだが
↓のようにリダイレクトされるんだが、このリダイレクトを抑止する方法ないか?

https://script.google.com/macros/s/

https://script.googleusercontent.com/macros/echo?user_content_key=


https://script.googleusercontent.com/macros/echo?user_content_key=〜の方に直接飛んでも
何故か、一旦https://script.google.com/macros/s/にリダイレクトされてからまたリダイレクトされるし…
0507デフォルトの名無しさん垢版2018/07/09(月) 18:11:50.09ID:1p1eFn95
503
0508デフォルトの名無しさん垢版2018/07/09(月) 18:18:12.92ID:kTTsYOtx
301 or 302
0509デフォルトの名無しさん垢版2018/07/22(日) 00:26:34.52ID:ZpQQ0pAE
spreadsheetのgasについて質問です。
getLastColumnの仕様は、値が入ってる最終列を返すのでしょうか?
値が入っていない列を返すときもあって混乱してます。

あと、insertSheetの直後にgetLastColumnを呼び出すと0が返ってくるのですが、このとき、存在する最終列を取得する方法はないでしょうか。
このとき取得したい期待値はZ列の26です。(画面上Z列までセルが有効になっているように見えるため)
これは26って固定値をもつのが気分的にいやっていうワガママです
0511デフォルトの名無しさん垢版2018/09/29(土) 19:38:05.42ID:LLxAt+HQ
GASの勉強は本とサイトどっちがいいですか?
おすすめとかあったら教えて欲しいです
0513デフォルトの名無しさん垢版2018/09/30(日) 11:25:49.99ID:ELKSxw7h
ここまで読みました
0514デフォルトの名無しさん垢版2018/09/30(日) 13:18:42.33ID:XFe1Q8VS
>>511
教えてください
0515デフォルトの名無しさん垢版2018/10/01(月) 00:18:27.39ID:IPuEyzUl
>>511
俺はWebサイト派
Qiitaあたりの情報で十分に勉強できた
0516デフォルトの名無しさん垢版2018/10/06(土) 02:08:54.46ID:2uRTZ8KW
html
<input type="button" onclick="google.script.run.aa()">
コード.gas
function aa(){
var value = document.getElementById("ta").value;
}
こんな感じでgas側でgetElement使いたいんだけど方法ないかな?
html側に書けばできるけどスクリプトをまとめてgas側に書いてスッキリさせたい
これだとvalueになにも入らないっぽい
ないならあきらめるが
0517デフォルトの名無しさん垢版2018/10/06(土) 10:06:26.13ID:QZvBbzw3
"ta"だけ渡してあとは好きに汁
0519デフォルトの名無しさん垢版2018/10/09(火) 21:03:41.76ID:J1hD0LSr
Google apps scriptで図書館のホームページにログインしたいのですが、できません。
どうすればログインできるのでしょうか?

function myFunction() {
var payload = {
"username" : "XXXXXXXXXX",
"j_password" : "XXXXXXX",
}
var options = {
"method" : "POST",
"payload" : payload,
"followRedirects" : false
}
var url = "https://opac.toshokan.city.fukuoka.lg.jp/licsxp-opac/j_security_check?subSystemFlag=0";

var response = UrlFetchApp.fetch(url, options);
var cookies = response.getHeaders()["Set-Cookie"];
var headers = { 'Cookie' : cookies };
options = {
method : "get",
headers : headers,
followRedirects: true,
};
var topUrl = "https://opac.toshokan.city.fukuoka.lg.jp/licsxp-opac/WOpacUsrLendListAction.do";
response = UrlFetchApp.fetch(topUrl, options);
var content = response.getContentText("UTF-8");
Logger.log(content)
}
0520デフォルトの名無しさん垢版2018/10/11(木) 19:13:50.65ID:KKlTShrO
driveにあるmp3ファイルに画像を貼り付けて、mp4にする。それをフォトに保存するscriptって作れますか?
可能であれば教えて頂けると幸いです。
0521デフォルトの名無しさん垢版2018/10/12(金) 05:14:25.86ID:1iFt3dhJ
できますよ
0523522垢版2018/10/12(金) 09:19:01.30ID:C1pVYns8
>>519
Ruby で、Selenium Webdriver では、
CSS セレクターで、入力欄を指定して、入力する。
入力できたら、ログインボタンを押す

element = driver.find_element(:css, 'input[name="userid"]')
element.clear
element.send_key "xxxxxx"

element = driver.find_element(:css, 'input[name="password"]')
element.clear
element.send_key "yyyyyy"

driver.find_element(:css, 'a.btn').click
0524デフォルトの名無しさん垢版2018/10/14(日) 21:11:05.91ID:Qblq+S/g
>>523
ありがとう
ただ、できればgasでしたいのよね
0525522垢版2018/10/14(日) 23:38:23.09ID:hWarSIQ5
>>519
のコードには、以下のように、
CSS セレクターで、入力欄を指定して、入力する部分を表示がないよね

element = driver.find_element(:css, 'input[name="userid"]')
element.clear
element.send_key "xxxxxx"

また、以下のように、
CSS セレクターで、ボタンを指定して、押す部分もないよね

driver.find_element(:css, 'a.btn').click
0526522垢版2018/10/14(日) 23:40:22.51ID:hWarSIQ5
>>525
修正

>CSS セレクターで、入力欄を指定して、入力する部分を表示がないよね
CSS セレクターで、入力欄を指定して、入力する部分がないよね
0527デフォルトの名無しさん垢版2018/10/19(金) 01:04:33.18ID:IuczYWmH
excelマクロをきっかけにVBA勉強してて結構楽しかったから、GASもやってみようと思う
VBAとGASの習熟の難易度で、どっちが難しいとかある?
スプレッドシートは便利そうで興味あるんだけど、マクロ使えないのが自分の中で枷になっててね
興味沸いてる
0530デフォルトの名無しさん垢版2018/10/19(金) 12:11:04.45ID:jQ8EJjtV
gasの方が簡単
pythonからも出来るよ
0533デフォルトの名無しさん垢版2018/10/23(火) 14:24:33.23ID:yFsvvFWj
交換じゃなくて一方通行のスレ
0534デフォルトの名無しさん垢版2018/10/23(火) 16:20:43.87ID:fX6+Gv53
APIは本家でRTFMだしなあ
便利なライブラリとか開発環境とか教えてくれれば交流になるかも
0536デフォルトの名無しさん垢版2018/10/24(水) 20:01:07.64ID:GW9EQyzD
VBAと同じ感覚でGAS勉強して職場で軽く披露してみたけど、思いのほか抵抗感強くて焦った
上司がセキュリティおじさんで困ったちゃん
0539デフォルトの名無しさん垢版2018/10/26(金) 13:19:49.44ID:xb+RGQ0c
上場会社とかになるとそれくらい情報の取り扱いが厳しくなるのかな
こっちは100人ぽっちの中小だから想像できないわ
0540デフォルトの名無しさん垢版2018/10/26(金) 16:46:23.98ID:8hqqerJ0
上場は隔離
0542デフォルトの名無しさん垢版2018/10/26(金) 22:40:04.49ID:THXYApLL
会社としてgsuite導入してるとこならどんどん使って良い
てかそんな会社があったら自分が入りたい
0543デフォルトの名無しさん垢版2018/10/26(金) 23:57:14.18ID:IDCNATjR
>>536だけど、Googleでもセキュリティの心配されるんだね
過剰にセキュリティに拘って便利なツールを使わないのはどうなんだろう
海外の企業とかどうしてんの?
0545デフォルトの名無しさん垢版2018/10/27(土) 00:32:34.74ID:QkHwtfgJ
googleなんて危険の筆頭だろ
0547デフォルトの名無しさん垢版2018/10/27(土) 00:54:46.00ID:QkHwtfgJ
個人的には嫌ってないよ
大事なものは暗号化してからうp汁
0548デフォルトの名無しさん垢版2018/10/27(土) 02:09:59.56ID:zu36BJom
大事なものを暗号化してメールで送るのはいいけど
そのパスワードを次のメールで送る日本企業
0549デフォルトの名無しさん垢版2018/10/27(土) 03:00:25.65ID:g1pi9PrZ
それを得意げに語る上司もセットで
マジであれはなんなんだ
社会に出て驚いた事ベスト3に入る程の衝撃だったわ
0550デフォルトの名無しさん垢版2018/10/27(土) 11:57:29.17ID:R2aCZi1a
>>548
別のメールに別けてるだけマシ
0552デフォルトの名無しさん垢版2018/10/29(月) 03:15:47.62ID:Oa9CImgn
そういう中身の伴わない、見た目を取り繕うだけの作業は今の若者はメチャクチャ嫌う

後輩指導する時に、そんな馬鹿な事はやらなくていいと指示したら、俺が上司に怒られた
じゃあ上司から直接後輩に指導してくださいと言ったら、それはお前の仕事だと逃げる
前の会社の話
0553デフォルトの名無しさん垢版2018/10/29(月) 11:17:29.02ID:rTl7m6mf
>見た目を取り繕うだけの作業

kwsk
0554デフォルトの名無しさん垢版2018/10/29(月) 18:29:21.95ID:Oa9CImgn
>>553
上で言われてた金庫とその鍵を一緒に送るような行為だよ
あとは、excelが警告を出すって理由でcsvファイルのマクロ加工が許されなかったり、その判断基準が分からなかった
会社は中小零細なんかじゃなくて、従業員数百いる中堅企業だったから、入社してから余計に驚いた
0555デフォルトの名無しさん垢版2018/10/30(火) 14:31:07.59ID:p4LrBCE7
社員の偏差値低そう
0558デフォルトの名無しさん垢版2018/11/15(木) 11:08:41.99ID:PvDTioib
質問いいですか?
0560デフォルトの名無しさん垢版2018/11/15(木) 19:19:33.65ID:PvDTioib
ちょっと待ってくださいね
0562デフォルトの名無しさん垢版2018/11/16(金) 10:59:11.72ID:9iOixtPe
二島返還と四島返還はどちらが良いですか
0564デフォルトの名無しさん垢版2018/11/16(金) 12:30:48.55ID:24hcK0zy
スプレッドシートのセルの条件で書式を変えるやつなんですけど
セルの保護を付けたり解除したりで背景色を変えることってできますか?
0565デフォルトの名無しさん垢版2018/11/17(土) 01:59:09.69ID:chEbFNdB
>>564
それをgasでやるんだよ
条件書式じゃできない
0567デフォルトの名無しさん垢版2018/11/17(土) 07:24:14.01ID:7mXoRMgv
セルが保護されてるか確認するコマンド?がわからないんです
それのtrueかfalseでなんとかなりそうなんですが
0569デフォルトの名無しさん垢版2018/12/02(日) 20:00:16.84ID:rfLR8sju
>>548
しかも、自動で送ってんだよね。
通信の保護はSSLでやってんだから、ファイルのご送信保護にはなってないね。

まるで意味がない
0572デフォルトの名無しさん垢版2018/12/13(木) 20:08:03.86ID:XOkEi3bk
GoでGraphQL(GAE)
https://outcrawl.com/graphql-server-go-google-app-engine
https://qiita.com/trrrrrys/items/44e839134af1a0155be2
https://tech.mercari.com/entry/2018/10/24/111227
https://github.com/99designs/gqlgen
>まず個人的な理由から。 筆者はGoogle App Engine/Standard Environmentの信者であり、
>それ以外のプラットフォームを使う気は今の所ありません。

いま日本企業で一番、エンジニアの採用に力入れまくってる
最先端ベンチャー企業の社員がここまで言い切るってことは
今後はGAE/Go注目かもしれんな
0573デフォルトの名無しさん垢版2019/01/29(火) 00:33:59.60ID:70mrLSKr
HtmlServiceでもalertでもいいのですが、spreadシートを開いている状態で、1時間おきにダイアログを表示させたいのですが時間主導型でトリガーをセットしても、このコンテキストからは呼び出せないとエラーが出ます。
何かいい回避策はないでしょうか?
0574デフォルトの名無しさん垢版2019/01/29(火) 15:21:21.69ID:13bkThSC
URL経由する
0575デフォルトの名無しさん垢版2019/02/11(月) 11:51:49.34ID:4YEc3wKR
スプレッドシートでマクロ起動させるために図形描画して
スクリプトを割り当てたらもう図形の編集や図形の削除ってできないんですか?
割り当て後は右上のプルダウンメニューがでてこないんです
0578デフォルトの名無しさん垢版2019/03/17(日) 12:45:23.95ID:OqCo+XAc
Googleカレンダーに添付ファイルを追加するコード教えて!
0579デフォルトの名無しさん垢版2019/03/17(日) 12:52:04.24ID:rD0zueCH
python用のならあるよ
0581デフォルトの名無しさん垢版2019/03/17(日) 12:59:07.48ID:rD0zueCH
ハゲめ
0585デフォルトの名無しさん垢版2019/03/30(土) 21:57:46.29ID:CwhbRKdW
GASではできないんじゃ?
Calendar APIならできるかもよ
調べてないけど
0586デフォルトの名無しさん垢版2019/04/04(木) 23:11:41.43ID:Wk+4k4Yw
GASを使ってnow関数の更新をとめる方法ってないでしょうか?
検索してもまったく出てこないんです
0587デフォルトの名無しさん垢版2019/04/05(金) 00:03:09.93ID:8TkW46B2
解決しました
0588デフォルトの名無しさん垢版2019/04/08(月) 12:05:47.40ID:/dR5dMe1
API使わなくてもlinkメソッドで出来るけどね。ここは知ったかぶりする回答者しかいなから使えない。
0592デフォルトの名無しさん垢版2019/04/21(日) 13:32:14.38ID:tITQ2Bq3
>>591
あきらめろ
0593デフォルトの名無しさん垢版2019/04/21(日) 15:32:49.13ID:4kO5c1T5
>>592
だからやり方のわからない人には聞いてないんですよ。

ちなみに書き方はわかったのでもういいです。
0594デフォルトの名無しさん垢版2019/05/05(日) 17:57:44.17ID:rLPrkeGk
googleフォーム
名前
趣味
好きな理由
趣味
好きな理由
で得たデータ
名前 趣味 好きな理由 趣味 好きな理由
(名前の入力内容) (趣味の入力内容) (好きな理由の入力内容) (趣味の入力内容) (好きな理由の入力内容)

(名前の入力内容)
(趣味の入力内容) (好きな理由の入力内容)
(趣味の入力内容) (好きな理由の入力内容)
と並べ替えたいのですが、どのようにすれば可能でしょうか?
ご存知の方ご教示お願い致します
0596デフォルトの名無しさん垢版2019/05/06(月) 18:42:19.72ID:o0+2Jvom
あきらめろ
0597デフォルトの名無しさん垢版2019/05/08(水) 22:37:52.06ID:v2zfKxp6
フォームと連携されたシートをアレコレ弄るのはあんまりオススメしない
別シートにその形になるようにスクリプト組めば?
0598デフォルトの名無しさん垢版2019/05/13(月) 00:46:09.37ID:31F8kOtz
前職を退職してしばらく経過している、VBAとPHPしかできないウンコちゃんなんですけど、
これから勉強するならVBAとGASどっちがおすすめですか?
中小企業でのGSuiteの普及具合ってどう?
0601デフォルトの名無しさん垢版2019/05/15(水) 20:51:09.77ID:UMUjFXwO
もしかして、スプレッドシートって、テキストボックス配置出来ない?
ボタンを押したときに、テキストボックスに入れた値を引数にしてGAS実行とか無理?
0602デフォルトの名無しさん垢版2019/05/16(木) 11:37:04.16ID:Ox4fjiQE
きみにはむり
0604デフォルトの名無しさん垢版2019/05/16(木) 22:27:53.89ID:aE3zz80C
あ、ごめん、Excelレベルのやつ。
下手に触ると、変形したり消えちゃったりする、
図形のじゃなくて。
0605デフォルトの名無しさん垢版2019/05/16(木) 22:52:16.37ID:M/iLkUxO
セルじゃあかんのか
0606デフォルトの名無しさん垢版2019/05/16(木) 23:54:06.79ID:aE3zz80C
セルだと、「ここに値を入れるんだぞ」って感じじゃないので。

なんて言うか、例えば格子状に線が引かれている方眼紙みたいな年賀はがきがあって、
そこに住所とか氏名書いたら、物凄く萎えると思うの。
0608デフォルトの名無しさん垢版2019/05/17(金) 09:29:57.48ID:Eosg7Npq
まずSpreadSheetにその機能があるのか?
テキストボックス付きのExcel表を変換したらどうなる?
0610デフォルトの名無しさん垢版2019/05/18(土) 10:19:31.77ID:wL0pdwUB
HTML ServiceとUI使えばダイアログボックスやサイドバーに
htmlを使ってテキストボックスやボタンとか表示させることができるよ
0616デフォルトの名無しさん垢版2019/05/21(火) 22:07:00.33ID:Jja3BPK6
>>611
getIdのドットの前のオブジェクトは何?
それ次第

getEventIdはカレンダーイベントオブジェクトでしょ?
だからカレンダーイベントのidが取得できる
0617デフォルトの名無しさん垢版2019/05/21(火) 22:07:54.48ID:Jja3BPK6
>>611
getEventByIdだったw
イベントidでイベントを取得するメソッドだね
0618デフォルトの名無しさん垢版2019/05/22(水) 22:43:46.56ID:bxcYYOqD
>>617
カレンダーイベント配列のgetId。
だから、何でカレンダーイベントのIdを取得できるのがもう一つあるのかなと。
しかも取得結果が違うし。

getIdは、長い暗号 + メールアドレスみたいな文字列が返ってくるけど、
getEventByIdは、全然違う文字が返って来たり、空だったりする。
0619デフォルトの名無しさん垢版2019/05/23(木) 03:29:55.06ID:4J3/T4Xu
sheet.getRange().sort(column);

の様な処理で column 列が式の場合、式の文字列でソートされますが
この関数は演算結果に対して行う手法はあるのでしょうか?

無いようなら getDisplayValues で配列に取り込み、
放り込みなおして sort するのが比較的手数が少ない方法ですかね?
0621デフォルトの名無しさん垢版2019/05/23(木) 14:01:08.81ID:4J3/T4Xu
検証不足で他の要因で一部にソート異常があったので思い込みにはまってました、お恥ずかしい
0622デフォルトの名無しさん垢版2019/06/06(木) 07:53:11.68ID:0GC4e250
スプレッドシートでExcelのマクロみたいなことをしたいのですが
オススメの参考書などありますでしょうか?
0623デフォルトの名無しさん垢版2019/06/06(木) 22:33:31.61ID:17p7tBKQ
ググって調べるのが一番だと思うけど。
俺も欲しかったので、Amazonで調べたけど、
内容がすぐに陳腐化するらしい。
アップデートが頻繁なのも善し悪しだな。
0624デフォルトの名無しさん垢版2019/06/08(土) 17:29:30.36ID:h5srjJt3
Javascriptの基礎的な言語知識と
GAS独自のオブジェクト
たとえばスプレッドシートなら
Spreadsheet, sheet, rangeなどが分かればある程度のものは
組めるようになると思う
0625デフォルトの名無しさん垢版2019/06/16(日) 20:09:51.82ID:ZtozgK8X
gmailの着信をトリガーにする方法はありますか?
今は1分間隔でスクリプトを動かしてるんだけど、
たまに経過時間でエラーがでちゃうので、1分間隔は厳しいのかなーとか。
0626デフォルトの名無しさん垢版2019/06/17(月) 10:59:46.44ID:lxO8a0KV
定期的に自動で再起動するスクリプトにしろ
0627デフォルトの名無しさん垢版2019/06/19(水) 00:49:14.23ID:HMJH3ram
質問なのですが、

1・スプレッドシートにボタンを作る(挿入→図形描画で作りました)
2・そのボタンにツール→スクリプトエディタで書いた、簡単なgasを紐つける

これでPCのブラウザからはボタンをクリックすると、ちゃんとgasが何の問題もなく正常動作するんですが
スマホのスプレッドシートアプリから同シートを開いてボタンをクリックするとgasが全く動きません

エラーも出ず、ボタンオブジェクトがクリックされた状態(D&Dでオブジェクトを移動できる状態)になるだけです

もしかして、gasはスマホのスプレッドシートアプリからは動作しなかったりしますか?

なお、書いたgasは以下です

function addTuujouKinmu() {
var sheet=SpreadsheetApp.getActiveSheet();
var x=sheet.getRange("D14").getValue(); //現状の通常勤務日数を取得

sheet.getRange("D14").setValue(x+1); //ボタンがクリックされたら勤務日数+1
}

よろしくお願い致します
0629デフォルトの名無しさん垢版2019/06/19(水) 14:23:03.68ID:HMJH3ram
>>628
なぜかスマホのブラウザからでも編集、gasの動作しないです
どうも閲覧専用アカウントのような、閲覧しかできない状態になっているように見えます

ブラウザはios版GoogleChromeで、グーグルアカウントはこのシートとgasを書いたオーナーアカウントでログイン済みです
PCブラウザで同アカウントでログインして、gasの正常動作とシート編集などできる事を確認しているアカウントです

スプレッドシートのgasが、アプリはブラウザでもスプシアプリでも何でもいいので、
スマホで動作している方いらっしゃいませんでしょうか?
0633デフォルトの名無しさん垢版2019/07/26(金) 10:10:58.05ID:ycINWf6e
馬鹿には無理
0634デフォルトの名無しさん垢版2019/07/27(土) 23:05:56.23ID:8PWCZyQY
>>632
トリガーあるじゃん
0635デフォルトの名無しさん垢版2019/07/29(月) 00:59:59.45ID:Dem7abun
トリガーも使ってます、定期送信用に。
ただ、不定期にspreadsheets上で複数宛先に一括送信する場合、毎回宛先も内容も違うので、念のため事前にgmail上でチェックしたいのです。
0638デフォルトの名無しさん垢版2019/09/12(木) 20:34:14.26ID:hHaUU8VW
そうだね
0639デフォルトの名無しさん垢版2019/09/12(木) 20:36:48.23ID:hHaUU8VW
でもES5の仕様がほとんど使えないから
ちょい古めのJavaScriptで書くことになる
0640デフォルトの名無しさん垢版2019/10/04(金) 01:45:57.83ID:zbpSxYO6
ドキュメントにあるデータ名・URL・オーナー名・作成日・更新日を一覧化したいんだけど、指定したオーナーのデータのみ吐き出したい。
これってできる?
0641デフォルトの名無しさん垢版2019/10/04(金) 15:10:08.55ID:JXWhYfPM
どうして出来ないと思ったの?
0642デフォルトの名無しさん垢版2019/11/01(金) 14:08:33.21ID:NFOS1XEp
スプレッドシートのonOpenで自分のホルダー名知りたいのですがdriveappの一部が仕様でエラーになります。何か裏技無いでしょうか?
0643デフォルトの名無しさん垢版2019/11/01(金) 17:12:50.47ID:ep+Mqrpb
自己解決、onOpenじゃなくて現在のプロジェクトのトリガーでスプレッドシートの起動時にvoldの関数を実行すると登録したら動きました。擬似的なフォルダ構造でやれそうです。
0644デフォルトの名無しさん垢版2019/12/22(日) 20:08:35.90ID:euY4U9Rb
スプレッドシートの内容をカレンダーに自動追加するスクリプトを素人ながら作りましたが、
いわゆるAPIの呼び出し過多で実行時間が11-14秒かかります。
短縮するにはどのように書き直せばいいかご教示いただけないでしょうか。

function CreateEventfromSheet() {
var sheet, i, event, date, added;
sheet = SpreadsheetApp.getActiveSheet();
for(i = 2; i <= sheet.getLastRow(); i++) {
added = sheet.getRange(i, 16).getValue();
if(added == "") {
event = sheet.getRange(i, 11).getValue();
Logger.log(event)
date = sheet.getRange(i, 12).getValue();
Logger.log(thedate)
thisevent = CalendarApp.getCalendarById("*****")
.createAllDayEvent(
event,
date
);
sheet.getRange(i, 16).setValue("done");
}
}
}
0648デフォルトの名無しさん垢版2020/01/01(水) 00:53:00.78ID:DBz6lwN3
>>644
結果を入力するとことか無駄あるけど、こんな感じかな
ポイントはシートにセットする値は二次元配列にしないとだから、resultにpushするときに配列として渡してあげるとこ
ただカレンダーの予定を入力するのは結局一つずつだから、大量に入れると遅くなるのは仕方ないかも

A列 タイトル
B列 日付
C列 イベント作成したかどうか


function sample() {
var sheet = SpreadsheetApp.getActiveSheet();
var calender = CalendarApp.getCalendarById('####');
var data = sheet.getDataRange().getValues();

// カレンダーへのセットの結果を格納する配列
var result = [];
data.forEach(function(value){
if(value[2] === ''){
var title = value[0];
var date = new Date(value[1]);
calender.createAllDayEvent(title, date);
result.push(['done']);
}else{
// すでにセットされている予定は更新しない
result.push([value[2]]);
};
});
sheet.getRange(1, 3, result.length, 1).setValues(result);
}
0650644垢版2020/01/01(水) 16:06:51.26ID:Xdbev+rH
あけましておめでとうございます。
>>645,>>648
ありがとうございます。
結果的に下記内容で実行時間を1カレンダー入力を2秒未満に済ませることができました。
カレンダー追加済と日付の指定を探しに行く範囲を限定しただけですが...
前提となるシートの内容が、
上から順に案件番号(3列目,C列)と案件名(10列目)は振られるものの、
カレンダーへの反映は予定日(11列目)が決まり次第のため、
入力済かの判定列(15行目)は途中で空欄が含まれるものでした。

>>648の内容をすることを正月休みの宿題にすることにします。
0651644垢版2020/01/01(水) 16:07:06.72ID:Xdbev+rH
function CreateEventfromSheet2() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow()
var columnC = sheet.getRange('C:C').getValues();
var lastRowC = columnC.filter(String).length;//案件番号の最終行
Logger.log(lastRowC)

for(var i = 2; i <= lastRowC; i++) {
var added = sheet.getRange(i, 15, lastRowC, 1).getValue();//カレンダー追加済か
var thedate = sheet.getRange(i, 11, lastRowC, 1).getValue();//予定日が入力されているか
if(added == "") {
if(thedate !==""){
var event = sheet.getRange(i, 10).getValue();
Logger.log(event)
thisevent = CalendarApp.getCalendarById("****")
.createAllDayEvent(
event,
thedate
);
sheet.getRange(i, 15).setValue("done");//追加済とする
}
}
}
}
0652デフォルトの名無しさん垢版2020/01/15(水) 22:19:02.47ID:22NAEhTT
GASに、VBAのAdvancedFilter相当の機能はありますか?
ORとANDの組み合わせが自由自在のやつ。
0655デフォルトの名無しさん垢版2020/01/16(木) 23:53:39.30ID:zIX3nnAn
クエリ?
自シート内でフィルタではなく、他シート(または別範囲)に書き出す感じですか。
0656デフォルトの名無しさん垢版2020/02/25(火) 14:03:43.81ID:eF9AatYa
apps scriptでCSV読み込んでそれをgoogleドキュメントに差し込みしてそのあと印刷したいってできる?
0657デフォルトの名無しさん垢版2020/02/25(火) 15:37:53.26ID:FzVRg2bh
ok
0658デフォルトの名無しさん垢版2020/02/26(水) 14:11:00.74ID:OdP3ovVD
app script初回に他のアクセスするファイルの許可って途中からでも許可できるファイル増やせる?
0660デフォルトの名無しさん垢版2020/03/04(水) 19:02:19.80ID:DcIeIIMH
豚切りスマソ

ファイル名の同じpdfファイルを毎月同じ日にダウンロードして、Googleドライブに保存したいんだけど、そんなことできる?

例えばこれ
https://www.mizuhobank.co.jp/market/pdf/mid/midcba.pdf
0663デフォルトの名無しさん垢版2020/03/07(土) 10:04:47.92ID:M14eFJOx
GASで他人が作ったライブラリを追加したのですが、その内容を確認する方法はあるのでしょうか?あるのでしたらその方法を教えていただきたいと思います。

Twitterに投稿をするアプリの紹介している同人誌があり
Authを設定してそのライブラリに渡すことで実現しています。

ただ、そのライブラリは作者が開発したのもですので、
抜き取られていないかどうかを確認したいと思っています。
0664デフォルトの名無しさん垢版2020/03/07(土) 15:43:27.49ID:QH/1z6a5
今日初めてスプレッドシートでスクリプトを書き始めたド初心者です

変数にちゃんと値が入ってるか確認するためにLogger.log()でこまめにログを開くんですが、ログ表示にすごく時間がかかったり、スクリプトの中間辺りのLogger.log()だけ表示されていたりします

10〜20秒位待ってログを開き直すとちゃんと表示されるのですが、毎回待たされるのが地味にストレスです
素早く正しく表示させる方法はありますか?
ちなみに変数に値を入れて、その中身を表示させるだけのシンプルなものでもそれなりに待たされます

あとログウィンドウを移動させる際に、ウィンドウを持てる箇所の当たり判定が小さいのと、マウスカーソルが矢印から手に変わらないから、なかなか一発で動かせないのと、動かしたところでスクリプト画面にフォーカスしないからスクロール出来ないのも憎しみポイントですね
0665デフォルトの名無しさん垢版2020/03/08(日) 00:48:31.73ID:5hjyLnS+
>>664
新しいエンジンが供用開始になったばかりなのでまだ buggy かも
ログ表示は旧エンジンを使えばすぐ表示される

あんまり回答になってないが
0666デフォルトの名無しさん垢版2020/03/09(月) 10:51:06.63ID:p6Z1SMlj
>>663
その作者が公開設定してなきゃ確認する手段はない

有名どころのライブラリは公開してるのがほとんどだから、あやしいマイナーライブラリ使うより有名なTwitterライブラリ使ったら?
0667デフォルトの名無しさん垢版2020/03/09(月) 11:19:24.38ID:ZzLE3RUo
>>665
ありがとう
ログ表示快適になりました
0668デフォルトの名無しさん垢版2020/03/10(火) 21:35:41.05ID:ZDCF6+eP
>>666
理解しました。アドバイスもありがとうございます。

有名なTwitterライブラリを探してみたいと思います。
0669デフォルトの名無しさん垢版2020/03/12(木) 00:07:44.47ID:Ajw/pKZ3
>>667だけど追加で報告
V8エンジンをオフにしてると、includesって命令使った時だけエラーが出ます

if(!ran.includes(temp)) こう書いてある行でエラーになるけど、V8オフにすると問題無し
ranもtempも直前でログ表示してますが、中身に問題はありません


そしてまた質問なんですが、
特定のセルを変更した時だけスクリプトを走らせる事は出来ますか?

onEditだとどのシートのどのセルいじってもファンクション呼んじゃう
A1のセルでファンクションA、B1ならBを呼ぶ
あるいは
セルA1のプルダウンがAならA、BならBみたいにして、スマホからでも動かしたいんです
各シートは普通に手入力で修正追加する表計算として使いたいので、いちいちファンクション呼んでたらサーバーが地獄です

htmlと絡めてwebアプリ的にするしか無いんですかね?
0670デフォルトの名無しさん垢版2020/03/12(木) 01:52:13.27ID:cgiY/N73
>>669
includesはもとのGASではArrayオブジェクトにないからエラーになるのが通常動作
V8とオブジェクト単位で使える使えないがそもそも違うので、少しはリファレンス読んだ方が良いよ
0671デフォルトの名無しさん垢版2020/03/12(木) 13:27:32.42ID:j9jxQsAx
>>669
モバイル端末からはそもそもコンテナバインド型GASは実行できない
規約なり制限をきちんと読め
0672デフォルトの名無しさん垢版2020/03/12(木) 15:12:36.46ID:Aj8VN0Uo
GASファイルを他の人にアップすることって可能?
0673デフォルトの名無しさん垢版2020/03/13(金) 18:14:34.70ID:5AsLHuse
スプレッドシートに紐づけしたGASって他のスプレッドシート参照できないんだな
いい勉強になったわ、自動化する時はGAS単独で作るしかないな
0674デフォルトの名無しさん垢版2020/03/13(金) 18:40:07.18ID:cgyHyg3G
excelの何でもできる、痒いところに手が届くに慣れてると
Googleスプレッドシートには絶望しかない
0677デフォルトの名無しさん垢版2020/03/14(土) 01:13:49.59ID:UZOR73gH
>>673
できるでしょ
0678デフォルトの名無しさん垢版2020/03/14(土) 01:18:50.24ID:UZOR73gH
>>674
どこまでいってもOpenDocument派生だからExcelより同じ派生のLibreOfficeにあるCalcが近しいから仕方ないかと
0679デフォルトの名無しさん垢版2020/03/14(土) 03:57:51.59ID:B3THKCTN
>>677
いややってみたけど無理だったよ、スプレッドシートに紐づけしてるマクロの中で他のスプレッドシート開こうとしたら怒られたし権限がないって
0680デフォルトの名無しさん垢版2020/03/14(土) 04:45:08.26ID:B3THKCTN
>>679
このコメントは間違いだった、ちゃんとアクセスできたわ
謝罪しておきます、スペルミスしてたのかなあopenByidでミスったか・・・
0681デフォルトの名無しさん垢版2020/03/14(土) 15:29:14.23ID:UZOR73gH
>>680
変更履歴から直近の変更点は確認できるし、今後も同じような事にならんようになにが原因でできてなかったのかは明確にしとくと自分自身のために良いよ
0683デフォルトの名無しさん垢版2020/03/23(月) 12:05:18.59ID:Y7MCXH01
cat テキスト | grep hogehoge 相当は
テキスト.match(/.*hogehoge.*/g);
でよさそうなのですが
grep -v hogehogeに相当するのをGASでどう書けばいいのかわからないのですが、
どなたか教えてもらえないでしょうか
0684デフォルトの名無しさん垢版2020/03/23(月) 12:47:32.23ID:jGS2rL5b
Ruby なら、

text = <<"EOT"
abc
あいう
xyz
EOT

re = /あい/

text.each_line do | line | # 1行ずつ処理する
line.strip! # trim

puts line unless line.match( re ) # マッチしなければ
end

出力
abc
xyz
0686デフォルトの名無しさん垢版2020/03/23(月) 23:19:42.98ID:dwpdUDvb
VBAスレで相手にされなくなったからって、GASスレまで出向いてこないでくださいな。
0687デフォルトの名無しさん垢版2020/03/24(火) 11:22:47.32ID:JQ7YmFwi
そろそろ潮時
0688デフォルトの名無しさん垢版2020/04/03(金) 23:41:32.27ID:r3V2xUir
GAS極めようと思ったら、google cloud platformは必須かな?
0690デフォルトの名無しさん垢版2020/04/06(月) 10:04:22.06ID:o3kGovlh
GCPとGASは別物
GCP使っててもGASは使わん事のほうが多い、逆も同じ
0691デフォルトの名無しさん垢版2020/04/07(火) 00:19:15.67ID:yujFP2M7
GASでTwitterbot連動して投稿とかもうわけわかんねえ〜
0692デフォルトの名無しさん垢版2020/04/07(火) 01:50:45.93ID:JEfC632I
>>691
GASでInstagram連携はめんどうだけど、Twitter連携は楽だろ
0693デフォルトの名無しさん垢版2020/04/07(火) 03:46:14.96ID:yujFP2M7
何故かツイートコメントに改行コード入れても改行されないし投稿時間は毎回変える感じだったら、改行なんてツイッターの中で何が改行コードなのかわからねえし参考になる記事見て同じコードで解決にならなかったわ
0694デフォルトの名無しさん垢版2020/04/07(火) 08:11:25.19ID:d1kIoLlr
>>693
TwitterのTweetで渡す文字は一般的な改行コードしか存在しない
特別なものなんて使われてないから単純に文字列操作できてないだけかと
0695デフォルトの名無しさん垢版2020/04/07(火) 12:51:23.32ID:yujFP2M7
>>694
なるほど、\nで改行したいって言ってたけど理論上無理だったのか
0696デフォルトの名無しさん垢版2020/04/07(火) 13:31:44.40ID:fttEuirm
馬鹿には無理
0698デフォルトの名無しさん垢版2020/04/08(水) 07:37:08.96ID:lp3B4EHz
GASはJavaScript使えるからVBより好きなんだけど、スマホで編集・実行出来ないのが辛い
0699デフォルトの名無しさん垢版2020/04/08(水) 11:07:24.34ID:yTKDGYFG
定期的に居るけど、そこまでスマホでプログラムを編集実行するか?
プログラム書くのにスマホでとか効率悪すぎだろ
0700デフォルトの名無しさん垢版2020/04/08(水) 12:59:45.03ID:pfSjPaup
VBAと比べてどうですか?

細かい事やろうとするとやはりVBAじゃないとできないかな〜と思ってます。
ただ、利用者環境にOfficeのインストールの手間がかからない事を考えると
今後はGoogleスプレッドシートが一番なのかな
0701デフォルトの名無しさん垢版2020/04/08(水) 13:04:44.96ID:lWfV0IAd
VBAは蕁麻疹出るけど
GASは掻いてて気持ち良い

だがどんな場合でもGASが勝ってるかと言えばそうでもない
0702デフォルトの名無しさん垢版2020/04/08(水) 14:07:32.20ID:pfSjPaup
>>701
JavaScriptは慣れてますが
GASは初めてです。

おすすめの学習サイトがあったら教えてください。
インストールの手間が要らないので今後は、Googleスプレッドシートが覇権をとると思います。
0703デフォルトの名無しさん垢版2020/04/08(水) 20:32:13.89ID:lp3B4EHz
>>699
「プログラム」レベルの編集は流石に誰も望まないだろ
拷問だぞw
ちょっと出先でスクリプトの修正が出来ればいいんだよ
そしてスマホでスクリプトの編集が出来ない=何かあった時に対応出来ないからって理由なのか、スマホでマクロが動かないのは普通に不便じゃない?
0704デフォルトの名無しさん垢版2020/04/10(金) 20:01:31.97ID:GEPNEjLB
>>702
スプレッドシートとの連携でGAS使いたいならやりたい事次第で覚え方変わるかと

V8に対応したいなら本家リファレンス1択
巷に出回ってるのは旧バージョンでの解説
GASはJavaScriptより使えるオブジェクトが絞られてたり構文の書き方が微妙に違ったりするから、変に嵌らないためにはどっち選んでも本家リファレンスは読むべき
0706デフォルトの名無しさん垢版2020/04/10(金) 22:41:48.79ID:LG9l2UEQ
何で微妙に違う必要があるんだろうな。
VBAとVBSもそう。
微妙に違うことに何のメリットがあるのか。
0707デフォルトの名無しさん垢版2020/04/11(土) 00:39:48.95ID:zOl1Pfip
>>704
ありがとうございます。
VBAと比べる出来る事は限られて来るとは思いますが
やはり便利なので地道に学習していきます。
0708デフォルトの名無しさん垢版2020/04/11(土) 07:35:40.59ID:xPITD/62
>>706
VBAはVB6派生でVBSとはもともと設計から違うから、その2つは比較するもんではない
0709デフォルトの名無しさん垢版2020/04/11(土) 08:39:59.18ID:BbiRDQqi
設計を分ける必要があったの?
完全に同じか、全然違うならわかるが、
8割くらい似せるって何の意味があるんだろう。
0711デフォルトの名無しさん垢版2020/04/12(日) 02:51:36.98ID:eC/oIIb+
>>710
PWAは簡単にできる
アイコンなんかは設定から好きにできる
sw.jsも使える
0712デフォルトの名無しさん垢版2020/05/11(月) 18:01:42.60ID:WhXpohRR
Google Formで条件分岐した先の選択肢をSpread Sheetから読み込んでFormを自動作成することってできます?
できそうなら方法を教えていただきたいです

具体的には設問1はプルダウンで47都道府県を回答させてそれに応じて設問2は分岐
設問2は東京の人なら東京に関しての設問をSpread Sheetから読み込ませて作成するイメージです
0713デフォルトの名無しさん垢版2020/05/11(月) 18:16:31.54ID:MhpqGE2N
OK
やるがよい
0714デフォルトの名無しさん垢版2020/06/16(火) 21:15:21.68ID:72JD20DA
google drive で、あるフォルダの中に同じ名前のサブフォルダが沢山ある場合にそれらを結合してくれるスクリプトを作りたいんですが、参考になる記事などありませんでしょうか?

サブフォルダa
サブフォルダa
サブフォルダa
サブフォルダb
サブフォルダb



サブフォルダa
サブフォルダb

にしたいです。サブフォルダたちの中身は消さずに移動させたいです。
0716デフォルトの名無しさん垢版2020/06/17(水) 03:35:08.78ID:H0Dcbe9T
1つのフォルダ内に、同じ名前のサブフォルダが2つ以上作れるの?

そんなファイルシステムを見た事がない
0717デフォルトの名無しさん垢版2020/06/17(水) 04:34:34.17ID:9RQxAjph
>>716
ラベルみたいな感じだから、フォルダ名もファイル名も重複可能なのよ
1つのファイルを(シンボリックリンクではなく)複数フォルダに格納したりもできるので、普通のファイルシステム感覚で使うと戸惑うことがある
0718デフォルトの名無しさん垢版2020/06/17(水) 09:21:58.91ID:GES6ctGC
フォルダ名もファイル名も当てに出来ない
頼りになるのはIDだけ
しかもIDには階層構造が無いω
0719デフォルトの名無しさん垢版2020/06/17(水) 16:52:03.32ID:EftflnE3
>>715
どストライクな回答ありがとうございます。
私がやりたいことそのもののようなので、
後ほどじっくり読んでトライしてみます。
0720デフォルトの名無しさん垢版2020/06/22(月) 15:30:25.53ID:uOpuzf64
>>714 です
毎月同じ名前のフォルダをGoogleドライブにアップロードすると、同じ名前のフォルダが2つずつできてしまい困っていたため、このような質問に至りました。
このスクリプトを作って実験してみようも思い、
同じ名前のフォルダを複数アップロードしようとすると、「更新しますか?」というメッセージが出てきて、「更新」を選ぶと、重複なくファイルやフォルダがアップロードされました。
したがってスクリプトは不要になってしまいました。

私の記憶だと以前は特に尋ねられることもなく、同じ名前のフォルダやファイルが二重に出来てしまっていた気がするのですが、、、、改善されたんですかね?
0721デフォルトの名無しさん垢版2020/07/01(水) 13:06:41.87ID:gceVcA/H
Googleフォームの回答スプレッドシートで、回答上限数を設けたいです。

function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var value = sheet.getRange("N2").getValue();
if(value >= 4) {
form.setAcceptingResponses(false);
}
}

N2にSUMIFでの計算結果を入れています。
上記スクリプトでif(value >= 4) { でエラーが出てしまいます。
どうしたらSUMIFの結果であるN2が「4」以上になったらフォームを閉じることが出来るのでしょうか?
0722デフォルトの名無しさん垢版2020/07/01(水) 13:10:17.98ID:IfUrt5hg
parseint
0723デフォルトの名無しさん垢版2020/07/08(水) 18:10:45.46ID:B6DwYS1M
spreadsheetで、セルの罫線の設定有無を取得したいのですが、
setBorder()はあってもgetBorder()が見当たりません
罫線の有無を取得する方法は何かありませんか
0726デフォルトの名無しさん垢版2020/07/23(木) 00:44:11.36ID:9dNzv7wt
GASを今日知ったレベルですが
複数1000件程度のpdfファイルがあります。
そのタイトルを一気に1つのスプレッドシートに入れることはできますか?
可能であればそのフォルダの階層別のタイトルも入るのがベストですが、難しければファイルにタイトルのみで充分です。
よろしくお願いいたします。
0728デフォルトの名無しさん垢版2020/07/23(木) 00:45:59.77ID:4rdlbzE6
プロセスの秒数制限に引っかかるとかあったな
1000件くらいなら問題無いか
0730デフォルトの名無しさん垢版2020/07/23(木) 08:38:50.13ID:R7OYz0iq
ありがとうございます。ローカルというとWindows側での操作ですね。調べてみます。
他にもGoogleフォームでタイトルが違うだけのものを100くらい作らないといけません。
質問ばかりですみませんこの件で消えますので
0731デフォルトの名無しさん垢版2020/09/26(土) 16:10:20.48ID:PfG/B09Z
GASの開発環境を英語にするのは、Googleアカウントの言語を変更する以外に方法はありませんか?

目的はExceptionなどのエラーを英語で出力してほしいんです。

今日はプロパティの設定でバグが出ているようなんですが、以下のように日本語だと本来の意味とはニュアンスが異なりますし、IssueTrackerで「Data storag error」検索したらすでに報告されているのが分かったので余計な問題判別をせずに済みます。

日本語「データの保存容量エラー」
英語「Data storage error」
0732デフォルトの名無しさん垢版2020/10/23(金) 18:22:51.85ID:bYAKNzy9
gmailにおいて、添付を外して転送ということって可能でしょうか?

調べてみた所添付の付け方ばかりが出てきてしまい...
0733LINE-LaBot垢版2020/11/17(火) 22:09:42.09ID:oYeoYLE+
Google Apps Script とLINE Messaging APIでLINE BOTを作ってます。
よかったらどうぞ、スクリプト配布中
https://linelabot.info/
0734デフォルトの名無しさん垢版2021/01/21(木) 19:41:41.78
google doumentで画像から文字起こしとか簡単にできそうですね
他にいい方法があるのかもしれませんが
0735デフォルトの名無しさん垢版2021/01/28(木) 22:05:48.39ID:2E/cb6LF
共有ドライブのファイルをマイドライブにコピーするにはどうすればいいですか?
ずっと前は右クリック→コピーを作成 で出来ていた気がするのですが、
何故か今はショートカットが作成されてしまい、コピーが出来ないようです
0736デフォルトの名無しさん垢版2021/02/26(金) 14:16:01.31ID:uwtwTRSf
GAS触りたての赤ちゃんですが
スプレッドシートからキーワード検索してHTMLに出力しようと
少し作ってみたらクッソ時間がかかるんですけどそういう使い方は向いてないんですかね?
プログラムの書き方が悪いだけなら良いのですが
本ちゃんのスプレッドシートは40000行くらいになります
0737デフォルトの名無しさん垢版2021/02/26(金) 18:51:11.59ID:yh0R3Tzg
スクリプトの実行時間が何十秒かを過ぎると処理を終了する仕様があったような気がする
0738デフォルトの名無しさん垢版2021/02/26(金) 19:15:51.46ID:X0cz5fa1
>>736
そんなかからんと思うけどその時間とキーワードと各セルの文字数までわからんとなんとも言えん
0741デフォルトの名無しさん垢版2021/02/26(金) 19:50:13.87ID:iwep5/hd
>>736
スプレッドシートのアクセス(呼び出し)の「回数」が多いとめちゃ遅くなるよ
なるべく高速化とかの解説サイトとかあるから参考にしてみたら?
0742デフォルトの名無しさん垢版2021/03/01(月) 10:12:40.06ID:vgd9986a
いったん全部読み込んで処理すればいいかと。
本番と同規模のダミーデータでテスト忘れず。
0743デフォルトの名無しさん垢版2021/03/01(月) 10:25:00.27ID:rO9qQ6pi
>>741
HTML側でスプレッドシート開いて二次元配列に放り込んでからテーブルに出力してんですけど実用に耐えないくらい時間かかります。
functionで二次元配列に入れるべきなのかな
配列の受け渡しとかいまいちわかんない
0746デフォルトの名無しさん垢版2021/03/03(水) 18:08:09.09ID:/zPRpQHx
Browser.msgBox('hoge');

var ui = SpreadsheetApp.getUi();
ui.alert('hoge');

どっちもAndroidスプレッドシートアプリでは動かず一時停止状態のままになってしまいます
どうすれば回避できますかね?

処理が終わるまでshowModalDialogで操作させないようにする処理も泥アプリでは動かなくて困っています…
0748デフォルトの名無しさん垢版2021/03/05(金) 11:04:43.54ID:wmkFGJMv
詳しい方助けてください。
当方結婚式のプロフィールムービーを制作しています。
今後、Googleフォームを使って、テロップ入力、写真をお客様自身でアップロードする仕組みを作れと言われて困っています。

問題となっているのが、フォームでの回答後、アップロードした写真がファイル名しかわからない点です。
そこで、アップロードした写真ファイルを一覧化し、PDF化したうえでお客様へ自動返信出来ないかと考えてみました。

GASを使ってなんとか・・と思いましたが、ネットを探してみても方法が見つからず、途方にくれています。

どなたかお力添えをお願いできないでしょうか?
0750デフォルトの名無しさん垢版2021/03/06(土) 02:12:47.82ID:D36VxduV
何でフォームじゃなきゃ駄目なのか分からんが、
そんな指示を出すような奴は、
フォームとフォームっぽい何かがあったとしても、違いなんか分かりゃしないぞ。
0751デフォルトの名無しさん垢版2021/03/06(土) 17:23:31.98ID:eKT9Xq9d
>>748
できるけど、フォームじゃ何枚も写真をアップさせるのキツそう
Googleフォトかドライブにあらかじめアップさせて
HtmlServiceで画面作ったほうがいいんじゃないの?
0752デフォルトの名無しさん垢版2021/04/06(火) 23:13:17.50ID:ao+gKvtS
scrapingのライブラリでParser とcheeriogs以外で良いのあります?

cheerioよさそうだけどjquery知ってる前提でドキュメントが無くてjquery知らないからきつい。メソッドとかjqueryのやつ使えるの?
0753デフォルトの名無しさん垢版2021/04/13(火) 17:26:12.26ID:o3TSl1rF
自宅からスプレッドシートのdoPostに1分毎にテキストを送ってセルに書き込むだけの実験中なのですが、
実行数の所からログを確認すると2000回に1回くらいステータスが「失敗しました」になっています。
自宅の記録ではステータスコードは200が返ってきています。
doPost内をtry~catchにいれてエラーメッセージを書き込もうとしましたが、何も書き込まれていませんでした。
doPostが起動していない…?
なぜ失敗しているか分かる方いませんか。
0754デフォルトの名無しさん垢版2021/04/13(火) 20:44:13.01ID:YlnYj74B
>>748
自作フォームは難しい。
様々なページを作らないといけない

要するにファイルアップローダー、
TeraTerm, Putty みたいな画面が欲しいのでしょ

各顧客用のフォルダを作って、そこへアップロードするのでしょ

自作するのはキツイ。
何かのサービスを使うべき
0755デフォルトの名無しさん垢版2021/04/13(火) 21:04:50.52ID:YlnYj74B
>>752
jQuery で、スクレイピングするだけなら、
要素の取得、HTML・Text の所だけ読めばよい。
全部の文書を、読む必要はない

let abc = $( '#abc' ).html( );
console.log( abc );

$( 'CSS セレクター' ) を書けば、jQuery オブジェクトが取得できる。
jQuery( 'CSS セレクター' )でも良い

これを実行してみれば?

console.log( window.$ );
console.log( window.jQuery );
0756デフォルトの名無しさん垢版2021/04/13(火) 21:11:20.27ID:YlnYj74B
>>753
doPost は同期処理なのか?

非同期処理なら、コンテキストが異なるから、
try〜catch で捕捉できないのでは?

async/await なら、捕捉できるのか?
0759デフォルトの名無しさん垢版2021/04/22(木) 21:51:19.63ID:IEn85Cov
スプレッドシートのrange.getValues()のreturnで日付が勝手にDate object に変換キャストされるのいらんのだけど
文字列にできますか
0762デフォルトの名無しさん垢版2021/04/23(金) 01:36:47.27ID:Mr1QFRKK
>>758
できない
GASはローカルで動いてるわけじゃないからね
0763デフォルトの名無しさん垢版2021/05/19(水) 06:26:47.48ID:+jFbNy+f
トリガーを使って、"Sheet1"というシートのA1セルが変更された時のみ他の処理をさせたいのですが、
どのように掛けば良いでしょうか
SpreadsheetApp.getActive();
からシート名も取れると思いますが、引数からオブジェクトを指定するなどはできないでしょうか

VBAで書くと以下のような感じです

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Sheet1" Then
Debug.Print "sheet1が変更されました"
End If
End Sub
0764デフォルトの名無しさん垢版2021/05/19(水) 09:54:24.41ID:iHfxsQ4v
>>763
function onEdit( e ) {
if (e.source.getSheetByName() === "Sheet1"
&& e.range.getRow() === 1
&& e.range.getColumn() === 1) {

//なんか処理

}
}
0765デフォルトの名無しさん垢版2021/05/19(水) 21:19:17.86ID:+jFbNy+f
>>764
おっほおおおおおありがとうございますうううううう!!!!
めっちゃ助かりました、この一歩があればあとは 超特急で勉強できそうです、ほんま助かりました
0766デフォルトの名無しさん垢版2021/05/25(火) 09:12:15.05ID:7Zlc4Jvy
function pswV1(contract){
var url = "https://api.pancakeswap.info/api/tokens/"; + contract;
var content = UrlFetchApp.fetch(url).getContentText("UTF-8");
var obj = JSON.parse(content);
return Number(obj.data.price);
}

この関数作って使ってるんだけど、
定期的に再実行させるにはどうしたら良いのかな?
可能なら1分に1回再実行させたい。
0768デフォルトの名無しさん垢版2021/05/25(火) 14:37:01.15ID:7Zlc4Jvy
>>767
セル内で引数付けて使用してる関数をトリガーで定期実行するにはどうするの?
そういうサンプルがみつからない。
0769766垢版2021/05/25(火) 15:16:25.01ID:7Zlc4Jvy
とりあえずトリガー設定してみたけど最短1時間しかないね。
取得してるのは仮想通貨のレートだから最長でも5分程度にはしておきたい。
0770766垢版2021/05/25(火) 15:20:50.17ID:7Zlc4Jvy
ごめんなさい。
1分ありました。
0771766垢版2021/05/25(火) 15:23:17.48ID:7Zlc4Jvy
何度もすまん。
無効な引数でエラーになる。
やはりセル内で使用する関数にトリガーは使えないのでは?
0773766垢版2021/05/25(火) 19:47:34.24ID:7Zlc4Jvy
セル内は

=pswV1("0x27327672d1dc51f4dc58c9f413e1fa7e7ad8245e")

としています。
いまのところロード時とタブ切り替え時の任意リロード時のみ実行されます。
0775766垢版2021/05/25(火) 20:25:01.51ID:7Zlc4Jvy
>>774
複数あります。
いまのところ5個くらいですが日々変動します。

トリガーがダメならセル内から呼び出す関数からは引数とセル位置だけグローバル配列に入れておいて
トリガーから呼んだ関数でまとめて通信させる方法もあるのかなと考え始めてます。
まだ実装してないので動くかわかりませんが。
0777デフォルトの名無しさん垢版2021/06/03(木) 05:38:31.48ID:B8Ey28oS
GASでPhantom JS cloudで動的なページをスクレイピングする時に、どうやらページが重くて表示に時間がかかるため取得できない値があります
すでに表示されたサイトに対してjQueryで取得したりPythonとseleniumを使って
driver.get(url)
time.sleep(30)
html = driver.page_source
みたいに待機時間を作ればちゃんと取得できるので値は確かに存在しており、GASでうまくいかないのは待機時間がないせいだと思います
Phantom JS cloudでも待機時間を入れたいのですが可能でしょうか?どこに入れればよいのでしょうか?
0778デフォルトの名無しさん垢版2021/06/07(月) 12:08:43.93ID:tyfu3spt
フォームの選択肢ラジオボタンA,B,Cの
それぞれにバラバラの回答数上限を設定する方法を教えてください。さらにラジオボタン横に残数があるとなお嬉しい
0779デフォルトの名無しさん垢版2021/06/07(月) 13:30:55.90ID:pl6618+T
>>777
GAS は知らないけど、
Ruby, Selenium Webdriver, Nokogiri では、

要素の検索の timeout を長くするとか、
driver.manage.timeouts.implicit_wait = 30

それか、sleep するとか、
driver.navigate.to url

sleep 30

doc = Nokogiri::HTML( driver.page_source )
0780デフォルトの名無しさん垢版2021/06/10(木) 08:31:00.19ID:rZOQ7XKm
機能の23時にはちゃんと動いていたスクリプトが、今朝試してみたらエラーが出てしまってる

function doPost(e) {
 const getdata = JSON.parse(e.postData.getDataAsString());
//略
}
という関数を使ってるスクリプトがいくつかあるんだけど、全部
TypeError: e.postData.getDataAsString is not a function
というエラーが出るようになってしまった
同じ人いる?
0781780垢版2021/06/10(木) 08:31:48.52ID:rZOQ7XKm
>>780
誤字失礼。昨日の23時です。
0783デフォルトの名無しさん垢版2021/06/12(土) 21:54:06.58ID:yi8Rxd+W
見当はずれな質問も可能性高いんですが,
GASでうんこした時間をカレンダー登録するだけのスクリプト書いて,
ウェブアプリとしてデプロイしてAndroidのchromeのショートカット作って
それをデスクトップに保存して,そのアイコンをクリックすれば自分の
Googleカレンダーにうんこした時間登録できるとこまではできたんですが,
webショートカットなので当然chromeが起動してエラー画面が表示されちゃう

これをクリックしたらwebページも出さずに処理させる方法ってあるんでしょうか?
0785デフォルトの名無しさん垢版2021/06/13(日) 00:57:33.48ID:TPT9gOWH
>>784
ありがとうございます.
やっぱりそういう目的のものではないんですなあ……
スマホは常時持ち歩いているのでうんこするときに便所でワンクリックで
うんこした時刻を記録したいという目的なのでスマホから実行させたいんですよね
やっぱりアプリ作るしかないのかしら(´・ω・`)
0787デフォルトの名無しさん垢版2021/06/13(日) 22:42:32.09ID:TPT9gOWH
>>786
Termux 上で >>784が教えてくれたclaspをインストールして……
って事ですかね.
現状でもブラウザ開くけど目的の「ワンクリックでうんこした時間を記録」
は叶ってるので,まあうんこした時間記録するだけなのにAndroid上でLinux
環境セットアップしたくないかなって気はする.

……Termuxで実行するときってその実行コマンドをショートカットにして
デスクトップにおけますん?
0791デフォルトの名無しさん垢版2021/06/14(月) 21:57:18.79ID:m506649G
>>783のやりたいこととやってみたことを100%理解してるわけじゃないけど、詳しくないなりに考えたのが、自分ならうんこした時間をカレンダーに記録するスクリプトと連携したスプレッドシートがあったとして、IFTTTでボタンウィジェットを押したらそのスプレッドシートに何でもいいから行が追加されるようにして、うんこ記録関数のトリガーはスプレッドシートが更新された時に発動するようにする
0793デフォルトの名無しさん垢版2021/06/15(火) 22:38:27.71ID:Pikc/bWs
うわー皆さんいろいろアイディアありがとうございます.

>>792
試してみたんですがAndroid環境だと画面閉じないですね…

>>791
単純にうんこした時間をGoogleカレンダーに登録したいだけなんすよね…
なのでスプレッドシートとかは使いたくなくて,コードは

var date = new Date();
CalendarApp.getDefaultCalendar().createEvent("💩",date , date)

こんな感じで十分なので,できればこれをandroid上でアイコンに割り当てて一発実行したいのです.

>>788
ターミナル開く手間は避けたくて……

>>789
>>790
このどっちかででけそうな気がしてきたのでちょっと試してみます!
0795デフォルトの名無しさん垢版2021/07/13(火) 10:23:44.28ID:CjZmk7C6
共有しているスプレッドシートの

「編集者は権限を変更して共有できます」のチェックボックスを外す(無効にする)

ソースコードを教えてください

setShareableByEditors(shareable) を使えばできるようなのですが
使い方が分かりません

よろしくお願いいたしますm(_ _)m
0797デフォルトの名無しさん垢版2021/07/14(水) 18:54:15.93ID:GFXnTS4Q
グループ内で簡易なうpろだとして使いたいのですが、ファイルのアップロード、コメントが記入できて、
アップロード先のURLとコメントをスプレッドシートにリスト化してくにはどうしたらいいんでしょうか?
ファイルのアップロード、コメント記入してそれをスプレッドシートにリスト化、それぞれは出来たんですが組合わせると動作しません。
なにかサンプルになるようなページを教えていただけると助かります…
0798デフォルトの名無しさん垢版2021/07/15(木) 15:20:59.29ID:ygp86UHP
シートを作る
うpするGASを書く
アップロード先のURLとコメントをスプレッドシートにリスト化

>ファイルのアップロード、コメント記入してそれをスプレッドシートにリスト化、それぞれは出来たんですが

もっと具体的に
出来ればソースとか晒すべき
0799デフォルトの名無しさん垢版2021/07/15(木) 21:16:55.83ID:gFOIdhYR
>>793

>>788
>ターミナルを開く手間は、避けたい

どこかに、ショートカットを作れないの?

例えば、Windows ならデスクトップにショートカットを作って、
リンク先に、コマンドプロンプトを起動して、
Ruby でスクリプトファイルを実行する

C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/script.rb"

注意。書き込めないので、間に@を入れました
0800デフォルトの名無しさん垢版2021/07/18(日) 21:16:48.01ID:hteKw5EV
スプレッドシートのトリガー
onSelectionChangeの挙動ホント悪すぎる
ここらへんVBAと比べてダメ過ぎだな
0802デフォルトの名無しさん垢版2021/08/01(日) 21:02:43.56ID:zu2woDem
スプレッドシートとhtmlserviceで簡単なwebアプリ作ろうと思ったのですが、ユーザー毎のデータも扱う場合、どうやるのがいいんでしょうか。

アプリの実行者を「ログインしているユーザー」にすると、スプレッドシートへのアクセス件が必要だから、他の人のデータにアクセスされそうで怖い。

だからといって、実行者を「自分」(開発者)にすると、操作してるユーザーが誰なのかを判別できないし・・。
0803デフォルトの名無しさん垢版2021/08/05(木) 11:42:49.43ID:eMHroxtV
>>802
ユーザーごとのデータってどんなの?
スプレッドシートの1行で表現できないもの?
0804デフォルトの名無しさん垢版2021/08/08(日) 03:08:43.28ID:JLttzwiP
>>803
user | name | score
aaa@gmail.com | taro | 85
bbb@gmail.com | jiro | 75

みたいにスプレッドシートをDBとして使うWEBアプリの場合、
アプリを「自分(開発者)」として実行すると、ログインユーザーのemailが取得できないから、スプレッドシートから当該ユーザーのデータを取得できない

「アクセスしているユーザー」として実行すれば、ログインユーザーのemailが取得できるけど、このスプレッドシートへのアクセス権を与えないといけないので、他のユーザーの情報も全て見れてしまう

ので、普通はどうするものなのかが知りたいです。(有償のworkspaceは使わない前提です)
0805デフォルトの名無しさん垢版2021/08/10(火) 05:15:26.61ID:MjVqGGgl
>>804
なるほどね
普通がどうだかわからないけど
メアド自動収集をあきらめてユーザーに入力させるか
スプレッドシートをDBにするのをやめてCloudSQLを使う
かなぁ
0807デフォルトの名無しさん垢版2021/08/19(木) 04:51:29.28ID:l+iKsjPF
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const pivotSheet = spreadsheet.getSheetByName('a');
const pivotTables = pivotSheet.getPivotTables();

pivotTables.forEach(pivotTable => {
const pivotValues = pivotTable.getPivotValues();
pivotValues.forEach(pivotValue => Logger.log(pivotValue));
});

こんなかんじでpivotTablから値をとりたいのですが、ログとしては
pivotValueという値しか返ってこないのですが、なんででしょうか?

pivotValue.getValue() のようなことがしたいんです。具体的な数値が返ってくるような。
0808デフォルトの名無しさん垢版2021/08/19(木) 08:07:07.49ID:hKprbQAC
>>807
何も調べてないうえにやったこともないけと、文脈から察すると
Logger.log(pivotValue.getValue())
じゃない?
0809デフォルトの名無しさん垢版2021/08/19(木) 12:03:47.46ID:l+iKsjPF
>>808
getValue()は使えないみたいなんですよね、not a functionになって

getValueでしてみたらnullが帰ってきて謎...

ぐぐってもサンプルが出てこなくてまいりましたわ
0811デフォルトの名無しさん垢版2021/10/13(水) 00:47:48.09ID:Qk99MJFD
>>804
Webアプリのコードで自分の分だけしかアクセスできないように書けばいいだけだろ?
それともクライアントから任意のコードをサーバ側で実行させられるわけなの?
0813デフォルトの名無しさん垢版2021/10/17(日) 20:46:12.87ID:Nd7q+jNJ
ピボットテーブルで出力したテーブルの特定の文字列のセルを非表示にしたいのですが
やり方が御座いましたらご教示お願いいたします
条件付き書式で一致すれば文字を白にするといった「見えなくする」ではなく
セルをコピーしてもコピーされない状態にしたいです
よろしくお願いいたします
0814デフォルトの名無しさん垢版2021/11/01(月) 23:15:46.54ID:Q50KTbzj
公式見てもわからなかったんですが、
新しいスプレッドシートを作る関数→できる
そのスプレッドシートに何か書き込む関数→できる
そのスプレッドシートのスクリプトエディタをいじってスクリプトを付ける関数→?
できるんでしょうか?
0815デフォルトの名無しさん垢版2021/12/02(木) 21:38:11.37ID:FXlnpm0p
>>814
多分できない
あらかじめコピー元テンプレート用のスプレッドシートを用意しておいて
スクリプトも仕込んでおけばいけるかなと思ったけど
実行権限の付与ができないから無理じゃね
0816デフォルトの名無しさん垢版2021/12/18(土) 23:17:06.97ID:a3T2SFZh
はじめまして。
質問ですが、GoogleスプレッドシートのGAS(Google Apps Script)で、
「計算結果のみ」を別のスプレッドシートへコピーする方法を教えてください。

var ss_copyFrom = SpreadsheetApp.openById('コピー元のシートID');
var ss_copyTo = SpreadsheetApp.getActiveSpreadsheet();
var sheet_copyFrom = ss_copyFrom.getSheetByName('シート名');
var sheet_copyTo = ss_copyTo.getSheetByName('別のスプレッドシートのシート名');

var copyValue = sheet_copyFrom.getRange('W3:W200').getValues();
sheet_copyTo.getRange('B4:B201').setValues(copyValue);

上記でコピーそのものはできていますが、表示されるのが
コピー元であるスプレッドシートに入力されている「=T4-U4-V4」の結果
(コピー先のT列、U列、V列には何も入っていないため、「1899/12/30」が表示されています)で、
本当に表示させたいのはコピー元のスプレッドシートで「=T4-U4-V4」が計算された結果の数値「1」なのです。

GASについてはド素人(今月から使い始めました)で、ネット検索で色々調べてみましたが、
これといった解決策がわからず、困り果てています。

何とかお知恵を貸していただけますよう、お願い致します。
0818デフォルトの名無しさん垢版2021/12/19(日) 11:32:13.88ID:RkNKFft4
>>817
その通りでした...ありがとうございます。
表示形式を数値に変えたら、ちゃんと「1」がでました。
こんな単純なことに気づけないとは...失礼しました。
0819デフォルトの名無しさん垢版2021/12/20(月) 12:14:27.96ID:ViJtvVZ6
スプレッドシートのメニューバー変わりましたよね?
拡張機能からスクリプト画面選ぶようになってる…
調べたら10月から順次変わってる…?今日気付いたんですが2ヶ月掛かって更新されたってことでしょうか?
0821デフォルトの名無しさん垢版2022/01/15(土) 18:08:24.36ID:OIci5frO
web版のエディタが使いにくい。
ファイル+のとこのペイン?っていうの?あれが邪魔で小さくしたくてデベロッパーコンソールでイジってるんだけどどのcss変えれば小さくできますか?
0822デフォルトの名無しさん垢版2022/01/17(月) 18:17:08.30ID:ymAJekA/
スライドからスクリプト開いてスクルプト書きました。
スライドからそのスクリプト実行したくて、onOpen()でスライド表示時の右サイドバーにスジュリプト起動ボタンを表示するようにしました。
ところが、スライド開いた時にこのonOpenが実行っされません。
トリガーに登録せよ!という情報もあったのですが、トリガー登録画面には、「スライドを開いた時」的なものは無く、
「カレンダーを開いた時」のようなものしかありませんでした。
スライドを開いた時に、スクリプト起動させるボタンのようなものを表示して、そこからスクチプトを起動したいです。
方法があれば教えてください。
0823822垢版2022/01/18(火) 10:50:27.27ID:Y4BAPieC
解決しました。下記に載ってました。

Https://myfunc.jp/items/00015/index.html
0824デフォルトの名無しさん垢版2022/02/20(日) 03:04:59.59ID:kcCfXnh0
指定した文字列Aと背景色の2条件で集計したいのですが、書き方を教えて下さい。
文字列Aだけ、背景色だけ、などはいくつか見つけられたのですが、組み合わせ方が分かりません…。
0826デフォルトの名無しさん垢版2022/02/28(月) 14:47:01.29ID:QEzJwIFm
出来そうで出来ないというか検索してもやりかたが見つからなかったので
知ってたら助けて欲しい

【やりたいこと】
エクセルファイルをGASでスプレッドシートに変換してスプレッドシートにする
但しエクセルファイルの各シートのセルにはエクセル特有の文法で記載された計算式や関数がふんだんに使われているものとする

【ひっかかっていること】
単純にGASでDriveAppやDrive.Filesを用いてエクセルファイルをスプレッドシートに変換するだけだと
変換されたスプレッドシートのセルにはエクセルの特有の文法で記載された計算式や関数が移植されてきただけで
スプレッドシートではエクセル特有の文法で記載された計算式や関数は処理できないのでやりたいことが出来ない状態
なのでエクセルのセルに埋め込まれてる計算式で求められた計算値だけをスプレッドシートに移植したい
0827デフォルトの名無しさん垢版2022/02/28(月) 20:31:28.47ID:PjfLudyf
関数で計算されてるデータを全て数値などに置き換えた物をアップすれば簡単じゃね?
データとして貼り付ければ一瞬だしマクロ組めるでしょ。
0828デフォルトの名無しさん垢版2022/03/01(火) 18:33:50.02ID:VTA82jsu
そのエクセルが他から提出されてくるもので数百単位であるので
個々にそのマクロを仕込んだものを実行するというのは大変かなぁ

できればエクセルはそのままで一括で読み込んで
GASのなかでやっちゃいたい

無理げかなぁ
0830デフォルトの名無しさん垢版2022/03/02(水) 20:59:04.21ID:CHjRcKIO
>>826
スプレッドシートでは処理できない、って言う時点でGASじゃ無理でしょ。
どうしてもやりたいなら、下記くらいしか思いつかない。

@その数式と同じ動きをする関数を自分でGASで実装する

AWinのタスクスケジューラとか使って、VBAでExcel文字列化するなりCSV出力するなりして、それをGASでスプレッドシート化する。GoogleドライブアプリでWinとドライブを同期する
0831デフォルトの名無しさん垢版2022/03/02(水) 21:59:04.64ID:vYgwEkZg
しょうがないから一つヒント
同じフォルダ、若しくは特定のフォルダに入ってるExcelのファイルを全て文字に変換して保存するマクロを組めばOK
何百あろうが一瞬

全てのブックの全てのシートへループでぐるぐる回すだけだから、そんなに難しくないよ
0832デフォルトの名無しさん垢版2022/03/11(金) 16:04:46.03ID:GfEhxdTj
GASのソースコード内でタイムゾーンを変更することはできるのだろうか?
GASのエディタにあるjsonに書いて指定するというのは見つけたが、それだとコード内でgoogleドライブから開いたスプレッドシートには適用されなかった
GASのエディタではTokyoにしてても開いたスプレッドシートはPacificになってる
0834デフォルトの名無しさん垢版2022/03/11(金) 21:27:52.87ID:gLuUS5Uy
もしくはGoogleアカウント設定のプロフィールのタイムゾーンいじると
それ以降作成したスプレッドシートはデフォルト変わってるはず
0836デフォルトの名無しさん垢版2022/03/16(水) 10:48:26.08ID:JIpzCEZ0
スプレッドシートの複数列を指定して二次元配列に入れる場合のやりかたはわかるんだけど
離れた二つの列を指定することって出来る?

range = Sheet.getRange("D2:E1000");
array1 =range.getValues();
Logger.log(array1);

例えばこれだとD列2行目からE列1000行目までの2列分のデータを二次元配列に格納されるけど
これをD列2行目からD列1000行目とN列2行目からN列1000行目のデータを二次元配列に入れたい

D列とE列は隣り合ってるけど
D列とN列は隣り合ってないからうまく実現できない
0837デフォルトの名無しさん垢版2022/03/16(水) 11:31:39.30ID:y8PMgdeo
Rangeも配列で指定すればいいんじゃね
0838デフォルトの名無しさん垢版2022/03/28(月) 04:13:33.54ID:XbT1Q7Sk
const files1 = DriveApp.getFolderById(folderId1).getFiles();
const files2 = DriveApp.getFolderById(folderId2).getFiles();

こんな感じで異なるフォルダに格納されてるファイルをgetFiles取得した場合
その結果のfiles1とfiles2を合体させてfiles3にするようなことってできる?

いまだとファイルの数だけ繰り返すっていうのでfiles1を回すループ処理とfiles2を回すループ処理という感じで見栄えが悪いから
2つをマージしたfiles3を回すループ処理って感じにしたい
0841デフォルトの名無しさん垢版2022/03/31(木) 12:20:31.27ID:A0O2N5qb
GASでセルの値を変更させて変更後の値を読み取ってって一連の処理をしたいんだけど
一連の処理が終わるまでシートに表示される値がリフレッシュされないらしく
処理としてはセルへ値を出力してるけど読み取る値が出力前の値になってる
強制的にシートに表示される値を最新にすることってできないの?
0843デフォルトの名無しさん垢版2022/04/01(金) 06:42:07.95ID:68FipywF
setvalueで値をセルに入れるのってリアルタイム反映じゃなくて
スタックしてて処理が終わるみたいな切りがいいところで
まとめて反映する仕様じゃないのけ?

クラウドベースの実行だからサーバー側の負荷軽減のためだと聞いたが
コード云々でなんとかなるなら知りたい
0844デフォルトの名無しさん垢版2022/04/08(金) 13:56:00.62ID:PYg//+II
getValues()で取得したのはrangeで指定したのが1列分のデータであっても2次元配列になっちゃうけれど
getValues()の後ろに続けて.flat().filter(String).map(String) と付ければ1次元配列に変換できることを
ネット上で検索してたら見つけた

range = sheet.getRange("C2:C1000");
result = range.getValues().flat().filter(String).map(String);

実際に上記のようなコードで試したところ確かに1次元配列に変換はされてるけど
空白セルの要素が配列から消滅してしまってる

"A","B","","F","D"

上記のように要素数5個で3番目の要素が空欄の配列が欲しいのだが

"A","B","F","D"

上記のように空欄の要素が消滅して前詰めされた要素数4個になってしまってる
空白セルの要素も残したいんだけど、どうやったらいいのだろうか?
0847デフォルトの名無しさん垢版2022/04/08(金) 20:12:32.05ID:PYg//+II
result = range.getValues().flat()
とりあえず .filter以下を消したら望んでた結果は得られた模様
0849デフォルトの名無しさん垢版2022/04/08(金) 20:28:36.27ID:uSpd3hvB
セルに手入力された5:22とか8:24とかの見た目時間になってる単なる文字列を使って
時間の足し算をしたいんだが、なんかいいアイディアはないだろうか?
0850デフォルトの名無しさん垢版2022/04/08(金) 20:30:57.57ID:TDBa7GsZ
足し算自体はスプレッドシート上の計算式ではなく
値だけ変数に入れてhas上でやりたい
0851デフォルトの名無しさん垢版2022/04/14(木) 12:07:06.46ID:l9jSNk17
スプレッドシートに数十個のボタンを図形描画してスクリプトの割り当てをしたんだが何回設定しても
いつのまにかスクリプトの割り当てで割り当てたスクリプトが空欄に戻ってしまう
これって何か制限があったりするのだろうか

一通り設定して最初のボタンから確認していくと空欄に戻ってしまってて
ボタン押しても反応しない

設定した直後にボタン押すときはスクリプトが動いてるから最初から設定できてないわけではない
0852デフォルトの名無しさん垢版2022/05/24(火) 07:38:06.26ID:78erdOqF
ClassroomAPIを使って
-----
Classroom.Courses.CourseWork.list(クラスルームのID).courseWork.forEach(w =>{
〜〜〜〜〜〜
})
-----
ってかんじで受講しているクラスで出された課題それぞれに対して処理をしているんだけど、
これだと提出済み課題に対しても処理してしまう。
提出済みか判定して、除外するためにはどうしたらいい?
0853デフォルトの名無しさん垢版2022/05/27(金) 11:50:40.73ID:S0cy91Tb
提出済みか判定して、除外す提出済みか判定して、除外すればいい
0854デフォルトの名無しさん垢版2022/05/28(土) 11:07:36.06ID:81XaDMLN
FastAPI
OCID
0856デフォルトの名無しさん垢版2022/07/22(金) 09:02:24.10ID:CcjlX4kF
質問します
ローカルにあるファイルをメールに添付して
指定時間に送信するみたいなことを
gasでやりたいのですが、
ローカルファイルをGoogleドライブに取り込むところから躓いてます

こういうやり方があるよ、とかこのHPが参考になる、みたいなのはありますか?
0857sage垢版2022/07/28(木) 15:18:39.59ID:5gdZfTov
m5stackでボタンを押す → スプレッドシートに書き込み → 編集をgmailで送信
というのをしたいなと。

参考にしたのはこのページ
https://knt60345blog.com/m5stack-googlespreadsheet/

要はボタンを押すとスマホに通知がくるシステムを作りたいのです。ところがgmailの送信がされません。

やったこと
1.スプレッドシートに編集があったときに通知する
→ 手入力だと通知される。しかし、scriptによる編集では通知されない。
2.gas上で編集をトリガーにしてsendgmailを使う
→失敗。おそらく1と同じ理由
3.スプレッドシートを編集するスクリプトの中にsendgmailを記述する
→編集はされるがメールは送信されない

sendmailの使い方を間違えているのかと思いましたがメールを送るだけのコードを実行するときちんと送れていました。

ヒントをもらえるとありがたいです。よろしくお願いします。
0859デフォルトの名無しさん垢版2022/08/03(水) 15:39:22.24ID:IS1ZoKH3
>>856
ローカルファイルと言うことはトリガー実行じゃないんだよね?
どういう操作を想定してるのかわからんけど、HTMLでダイアログ表示させるかdoGetでHTMLを表示させて
そのHTMLとJSでローカルファイルは読めるよ
https://tonari-it.com/gas-dialog-basic/

>>857
これで普通に出来たぞ
function doPost() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
var range = sheet.getRange('A1');
var values = range.setValue('hoge');
GmailApp.sendEmail('test@example.com', 'subject', 'body');
}
0860デフォルトの名無しさん垢版2022/08/04(木) 08:31:05.67ID:CP8sLsBT
>>858-859
回答ありがとうございます
もう回答もらえないのかな?と諦めておりました

実はローカルファイルをトリガー実行(時間指定)でメールに添付させたいというのが希望する処理なのです
グーグルドライブアプリからならキーも取れそうですね
会社からグーグルドライブアプリの設置許可貰えたらやってみます
0861デフォルトの名無しさん垢版2022/08/26(金) 19:09:52.12ID:fCaJRqVr

有料化
0863デフォルトの名無しさん垢版2022/08/31(水) 11:27:16.40ID:8zP5mkRm
googleSpaceのタスクにGASでタスク登録って可能?
登録しようとしても
GoogleJsonResponseException: API call to tasks.tasks.insert failed with error: Invalid task list ID
って吐かれる
IDはスペースのURL末尾を使ってる
0864デフォルトの名無しさん垢版2022/09/15(木) 22:22:03.06ID:ZhCJ57CK
しばらく触ってないうちにスクリプトエディタが変わっていたんですが、新しいエディタでプロジェクトのコピーを保存したい場合ってどうしたら良いんでしょうか?

自作のスクリプトを使ってもらうのにコピーを保存してもらっていたので代わりの方法を探しています
0865デフォルトの名無しさん垢版2022/10/25(火) 20:43:00.01ID:czhOEshi
Googleスプレッドシートの件で質問します。
A11からF11の列に、IMPORTRANGE()によって、他のスプレッドから取り込んだデータが入っています。行の数は未定(約300件ぐらい)です。
このままでは、元データのシートが更新されると、合わせてデータも更新されてしまいます。
この現在表示されているセルの値をそのまま、文字列としてセルに上書きするコードを記入したいのですが、どのように記述するとよいでしょうか?
0867865垢版2022/10/26(水) 02:36:10.71ID:wuQKMR4S
すみません。自己解決しました。
スレ汚し申し訳ありませんでした。
0868デフォルトの名無しさん垢版2022/10/26(水) 11:11:50.28ID:t4LQIfXs
謝るより原因や解決方法を書いていってほしい
質問と解決法が揃ってればスレ汚しにならない
0870デフォルトの名無しさん垢版2022/12/16(金) 21:50:55.76ID:/69Su096
1日一回gmailの中のメールをフィルタリングして集計してメールを遅るスクリプトを動かしてます。
今日までは毎日1回動いてましたが
本日近い時間帯で4回トリガーされていました。
このようなことが起こった方他におられませんでしょうか。
0872デフォルトの名無しさん垢版2023/01/16(月) 23:18:09.81ID:XkS+UaR1
ボタンを押下したらテーブルを表示させたいんだけど、どうすればいいのでしょうか?
0873デフォルトの名無しさん垢版2023/01/17(火) 00:42:43.29ID:fU/PH7pE
質問ざっくりしすぎ
0874デフォルトの名無しさん垢版2023/01/18(水) 09:15:14.72ID:NRwxJvcS
毎月の商品ごとの売上グラフを作ってるんですけどAには赤、Bには青、Cには黃というように色指定は出来ますか?
グラフの並び順に1番目から赤、青、黃という順序では出来るんですけど、順番が変動しても大丈夫にしたいです
A2=
if "A", Red
"B", Blue
"C", Yellow
みたいに出来たらいいなと思ってます
0875デフォルトの名無しさん垢版2023/01/20(金) 23:25:45.84ID:E/iTFMTm
二次配列の中の特定要素を一個だけじゃなくて任意の数があるか確認する方法ってある?
0876デフォルトの名無しさん垢版2023/01/21(土) 01:05:54.74ID:tr5Udobt
どういうこと?
何か日本語不得意なやつ多すぎね?
上手く質問できないなら具体例を書けよ

例えば
[
[1, 2, ...],
[3, 4, ...]
]
という二次元があったとき、
○○が○○であることを確認する方法ってある?

みたいな
0878デフォルトの名無しさん垢版2023/01/21(土) 16:40:27.15ID:/REhm/9K
ボタンが押下されたら表が動的に表示されるようにしたいのですが、動的に作成された表の値がundefinedになります。
下記の通りに書いたのですが、何故undefinedになるのでしょうか?
<script>
function displayTable() {
var htmlTable = google.script.run.getTable_Area();
document.getElementById("createdTable").innerHTML = htmlTable;
}
</script>

function getTable_Area() {
return '<table>' +
'<thead>' +
'<tr>' +
'<th>Result</th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr>' +
'<td>Date</td>' +
'<td><input value=<?= new Date();?>></input></td>' +
'</tr>' +
'<tr>' +
'<td>Area</td>' +
'<td><input value=<?= getArea();?>></input></td>' +
'</tr>' +
'</tbody>' +
'</table>';
}
0879デフォルトの名無しさん垢版2023/01/21(土) 20:12:40.75ID:tr5Udobt
>>878
パッと見だけど

displayTableはフロント側の関数だよね
getTable_Areaはgoogle.script.run経由で呼び出してるからgs(バックエンド側)の関数だよね

google.script.runはwithSuccessHandlerのコールバックでレスポンス受け取るから、変数htmlTableはundefinedになるんじゃね?
0880デフォルトの名無しさん垢版2023/01/21(土) 21:05:36.17ID:EDO4fSiJ
>>879
>displayTableはフロント側の関数だよね
>getTable_Areaはgoogle.script.run経由で呼び出してるからgs(バックエンド側)の関数だよね
はい。それぞれフロントとバックエンド側になります。
withSuccessHandlerを以下の通りに使用し、実行したところundefinedは表示されなくなったのですが、表が表示されないということはcalculateArea()の書き方がいけないのでしょうか?
<script>
function calculateArea() {
var htmlTable = "";
google.script.run.withSuccessHandler(function(data) {
htmlTable = data;
}).getTable_Area();
document.getElementById("createdTable").innerHTML = htmlTable;
}
</script>
0881デフォルトの名無しさん垢版2023/01/21(土) 21:11:08.81ID:tr5Udobt
>>880
こうしてみて

function calculateArea() {
google.script.run.withSuccessHandler(function(data) {
document.getElementById("createdTable").innerHTML = data;
}).getTable_Area();
}
0882デフォルトの名無しさん垢版2023/01/21(土) 22:20:43.38ID:EDO4fSiJ
>>881
ありがとうございます!表が表示されるようになりました!

もし可能であれば、もう1点教えていただきたいのですが、
上記 function getTable_Area()には
'<td><input value=<?= getArea();?>></input></td>'
のようにgetArea()などの関数を表が作成される際に呼ばれるよにしています。
しかし、表示されたタブをみてみると
<input value="<?=" getarea();?="">
になっており、エスケープ処理?がされているみたいです。
実際にアプリを開発する際は、何か別の方法でinputの値に関数の戻り値を代入しているのでしょうか?
0883デフォルトの名無しさん垢版2023/01/21(土) 22:36:15.48ID:tr5Udobt
>>882
そのgetAreaはどっちの関数?
フロント?バック?
0884デフォルトの名無しさん垢版2023/01/21(土) 22:50:23.61ID:EDO4fSiJ
>>883
バック(gs)になります。
0885デフォルトの名無しさん垢版2023/01/21(土) 22:59:56.13ID:tr5Udobt
>>884
これで良くない?

function getTable_Area() {

const a = new Date();
const b = getArea();

return '<table>' +
'<thead>' +
'<tr>' +
'<th>Result</th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr>' +
'<td>Date</td>' +
'<td><input value="' + a + '"></input></td>' +
'</tr>' +
'<tr>' +
'<td>Area</td>' +
'<td><input value="' + b + '"></input></td>' +
'</tr>' +
'</tbody>' +
'</table>';
}
0886デフォルトの名無しさん垢版2023/01/21(土) 23:07:30.06ID:EDO4fSiJ
>>885
なるほど。そのようにすればよかったのですか。
ありがとうございます!大変勉強になりました!
0888デフォルトの名無しさん垢版2023/01/21(土) 23:41:09.53ID:EDO4fSiJ
>>887
いえいえ。重ね重ね、ありがとうございます!
テンプレートリテラルを勉強して使ってみようと思います。

またご推察の通り、同期の問題も発生しておりますので、それも合わせて勉強してみます。
0889デフォルトの名無しさん垢版2023/01/22(日) 09:05:30.28ID:1NpPY/pK
ERB(埋め込み・Embedded RuBy)なら、HTML 内で、
<% 〜 %> でRubyのコード片を実行するだけ(出力はしない)。
<%= 〜 %> でRubyのコード片を実行して出力する

例えば、a.html.erb が以下なら、

<% ary = [ "<a>", "あ" ] %>

<% ary.each do |item| %>
<input type="text" value="<%= item %>">
<% end %>

a.html は、以下のように出力される

<input type="text" value="<a>">
<input type="text" value="あ">
0890デフォルトの名無しさん垢版2023/01/25(水) 19:23:10.13ID:EJwoBEnK
test
0891デフォルトの名無しさん垢版2023/01/25(水) 19:23:43.80ID:EJwoBEnK
やりたいこと:
Maps.newStaticMap()で作成した画像?をHTML上に表示させたい。

試したこと:
index.htmlから呼ばれるtest.gsの関数内で
var googleMap = Maps.newStaticMap().setCenter(centreY,centreX)
を定義して
return googleMap.getMapUrl();
でそのURLを取得しました。
そのURLをHTMLのIMGタグに
<img src="〇〇〇" width="100px" height="100px">
と入れても画像が表示されませんでした。


HTML上でbodタグの中に画像を表示させようとしているのですが、ファイルアイコンが半分に敗れたものが表示されています。
0892デフォルトの名無しさん垢版2023/01/26(木) 03:32:17.94ID:n/mKepPR
>>891
getUrlで取得されたURLにあるものって画像じゃないよね
画像じゃないものをimgタグにセットしても表示されないよ

URLにあるものを画像化するか
iframe使って表示させるか(未検証)
どっちかのアプローチじゃないかな
0893デフォルトの名無しさん垢版2023/01/26(木) 04:58:55.72ID:p3aeborJ
>>892
わかりました。
ありがとうございます。
0894デフォルトの名無しさん垢版2023/02/02(木) 21:14:34.93ID:d3AVgBUi
GAS愛好家のみなさん
ContactsAppからPeopleAPIへの移行状況はいかがですか?

勝手が違いすぎてよーわからん
公式すらあんまり情報ないしマトモな記事載せてるサイトもないですよね
0895デフォルトの名無しさん垢版2023/02/03(金) 12:45:44.80ID:0b57qUmd
スプレッドシートについての質問をさせてください
条件付き書式で、フォントサイズを変更するにはどうしたらいいでしょうか
表で一定の値の数字以上はフォントサイズが大きくなる、という仕様にしたいです
0897デフォルトの名無しさん垢版2023/02/15(水) 16:03:34.65ID:b8FtSvc2
GASじゃなくてスプレッドシートなのだけど、
検索窓閉じた時検索結果に跳ぶの避けられませんかね。
0898デフォルトの名無しさん垢版2023/02/18(土) 13:58:20.49ID:W3nKwjDO
やりたいこと
スプレッドシートに沢山ある あ い う とかいう文字列を
i[あ.い.う...]
t[a.b.c...]
という配列使って一度に置換作業がしたい。
i[1]→t[1]みたいな感じで。

replafeとforの組み合わせでなんとかなるかな?と思ったのですが、リファレンス読む限りreplace(a,b)の置換のa部分に変数を用いることは出来ないようなので他の方法を探しています。
ご教授頂きたく。
0899デフォルトの名無しさん垢版2023/02/18(土) 18:58:41.14ID:W3nKwjDO
>>898
自己解決。
というか諦めて別シートに呼び出した後substituteとxlookupの組み合わせで無理やり置換したのを表示させました。
0902デフォルトの名無しさん垢版2023/02/20(月) 02:05:22.77ID:6OqVkYRD
>>901
ありがとうございます!spliceメソッド使ってみます。
その前に1つずつ検索かけるのに手古摺ってますが、なんとかやってみたいと思います。
0903898垢版2023/02/20(月) 16:04:41.81ID:4jGYSd8p
駄目でした…
includesにしてもmatchにしても配列[ ]で指定するとうまく動いてくれません。
配列を作らずfor文で無理やりセルを置換させるという荒業で解決しましたが時間がかかり過ぎて実用的でなく。

やりたいこと
table[[あ],[か],[さ],[た]...]
before[あ][い]...
after[ア][イ]...
以上の配列があり、
tableに対しbefore[i]を総当りで検索し一致したらafter[i]に置き換える。
0904デフォルトの名無しさん垢版2023/02/20(月) 18:43:52.85ID:czK6pNoa
>>903
やりたいことがいまいちわからん
こういうこと?

# ひらがなをカタカナに変換
table = [['あ','ア'], ['い','イ'], ['う','ウ'], ['え','エ'], ['お','オ'] ];
before = ['あ','い','う','え','お'];
after = before.map(b => table.find(a => b === a[0])[1]);
0905898垢版2023/02/20(月) 18:49:29.88ID:83YdaF3i
ありがとうございます。配列の中身は適当です…。
表と配列2種類の3つの要素があって、表にある配列1の要素を見つけたら配列2に置き換えるということをしたかったのです。

ですがお陰様でなんとかなりました!
二次元配列をflat()で一次元にして、splice使いました。
その後再度2次元配列に戻して元の形に直しました。
0906898垢版2023/02/21(火) 00:26:18.85ID:B3qxCQs3
>>904
mapメソッドはまだ理解できておらず…。
その一行で終わらせられるように勉強していきたいと思います。
結局以下のようになりました。ご教授ありがとうございました。

//1次元配列への変換。
let array = array.flat();
//array[x]とbefore[i]が一致したら置換(before→after)
for(let x = 0 ; x < array.length ; i++ ){
for(let i = 0 ; i < before.length ; i++ ){
if(array[x] == be[i]){
array.splice(x,1,after[i]);
}
}
//2次元配列に再変換、あとで貼付する。
let array2 = [];
let numOfElements = 6;//表の元のTableが6列あったので。
for(let t = 0; 0 < array.length ; t){
array2.push(array.splice( t, numOfElements ));
}
0907デフォルトの名無しさん垢版2023/02/21(火) 02:43:28.40ID:6tAoYaOK
>>906
flat使わなくてもいい

for(let i = 0; i< array.length; i++) {
for(let j = 0; j< array[i].length; j++) {
if(before.includes(array[i][j])) {
array[i][j] = after[before.indexOf(array[i][j])];
}
}
}

map使うなら
array2 = array.map(r => r.map(c => before.includes(c) ? after[before.indexOf(c)] : c));
0908898垢版2023/02/21(火) 08:58:31.52ID:B3qxCQs3
>>907
そのarray[i][j]の[j]を入れるとindexOfにしてもincludesにしてもうちの環境?では何故かエラー出て読み込めなかったんですよ。(
確かcannot read properties of undefinedだった筈)
それ外すとエラーなく読んだので仕方なくflat入れた次第です。
因みに
arrayX=array[x]
arrayY=array[y]
みたいに入れ子しても駄目でした。
0909898垢版2023/02/21(火) 09:10:16.56ID:B3qxCQs3
確認したらエラー全然違うし書いてること散々でした
訂正
出てたエラーは多分is not defined
下の入れ子は
arrayX=array[x]
arrayY=arrayX[y]
みたいにしても同じエラーだったかと。
0910デフォルトの名無しさん垢版2023/02/21(火) 23:07:45.74ID:6tAoYaOK
>>908
>そのarray[i][j]の[j]を入れるとindexOfにしてもincludesにしてもうちの環境?では何故かエラー出て
たぶん配列の添字が範囲外になってるんだろうけど
for文よりfor ofとかforEachのほうがシンプルにかける
const array2 = [];
for(let row of array) {
let cols = [];
for(let col of row) {
if(before.includes(col)) {
cols.push(after[before.indexOf(col)]);
}
else {
cols.push(col);
}
}
array2.push(cols);
}

const array2 = [];
array.forEach(function(row, i) {
row.forEach(function(col, j) {
if(before.includes(col)) {
array[i][j] = after[before.indexOf(col)];
}
});
});
0911デフォルトの名無しさん垢版2023/02/21(火) 23:08:33.93ID:6tAoYaOK
あと上のmapは省略しすぎてわかりにくかったのでアロー関数と三項演算子をやめたらこうなる
const array2 = array.map(function(row) {
return row.map(function(col) {
if(before.includes(col)) {
return after[before.indexOf(col)];
}
else {
return col;
}
});
});
0912898垢版2023/02/22(水) 11:50:37.27ID:7vReBJfV
>>910-911
何度もありがとうございます。
仰るとおり2度目の添字は一切読み込んでくれないので…
>>911のmap参考にしながら勉強させていただきます。
とりあえず長くなってしまったのでこの辺りで。また不具合出てきたら改めて質問したいと思います。
ありがとうございました!
0913デフォルトの名無しさん垢版2023/02/28(火) 21:38:42.26ID:8PRLUyLU
スプレッドシートの共有で閲覧権限を持っている人の
印刷は可能でファイルのダウンロードだけ禁止することは可能でしょうか?
0914デフォルトの名無しさん垢版2023/03/01(水) 10:13:26.28ID:NPxLOyBL
共有アイテムのファイルにスターをつける方法を教えてください
宜しくお願いしますm(_ _)m
0915デフォルトの名無しさん垢版2023/03/01(水) 14:17:21.21ID:csCK6+UB
sheetクラスを取得する方法ってgetSheetByNameとgetActiveSheetしかないよね?
getSheetBySheetIdがないのが謎なんだけどシートはシート名で管理するしかない?
0916914垢版2023/03/12(日) 00:26:03.80ID:ZZBXPzbK
>>914
自己解決しました
0917デフォルトの名無しさん垢版2023/03/24(金) 19:19:34.21ID:GCLzu5nr
Rangeオブジェクトから、セルアドレスの文字列を取得したい場合
Excelならr.Address()で相対参照や絶対参照を取得できますが
GASで同じようなことできるメソッドあります?
getA1Notation()だと相対アドレスでしか取得できないようで…
0919デフォルトの名無しさん垢版2023/03/25(土) 11:52:56.28ID:TC3JXJ5y
>>918
例えば
A1のRangeオブジェクトから
$A$1という文字列を取得できないかなと

GASから条件付き書式を設定するのに使いたいです

なぜ使いたいかというと
複数人で編集してコピペを繰り返すと条件付き書式が破壊されてしまうので
それを上書きリセットするためです

逆に、条件付書式だけロックかけて切り取ったり貼り付けたり出来ない設定ができるならそれで十分なのですが…
0920デフォルトの名無しさん垢版2023/03/25(土) 17:53:03.57ID:nYxwu6kr
>>919
>複数人で編集してコピペを繰り返すと条件付き書式が破壊されてしまうのでそれを上書きリセットするためです
通常の書式ならonEditで変更されたセルの書式を変更するだけでいいけど
条件付き書式をGAS上で扱ったことなかったから調べたけどちょっと面倒だね
そんでよくよく考えてみたらそもそもGAS使うならonEditで書式変更すればいいだけだから条件付き書式を使う必要がないと思った
0921デフォルトの名無しさん垢版2023/04/04(火) 12:37:38.49ID:dAPefWGR
スプレッドシートにスクリプト作成して権限付与して動作するように設定したあと
そのスプレッドシートをコピーするとスクリプトもコピーされるようですが
スクリプトの権限やトリガーは設定しなおしが必要のようです。
イメージ的には、vba付のExcelをコピーして別ファイルとして保存して
毎月のデータを作成していく、みたいなことがしたいんですが
その辺コピーするだけで全部引き継がれるみたいな設定ないのでしょうか?
0922デフォルトの名無しさん垢版2023/04/11(火) 18:45:08.89ID:u8YBlLPL
類似画像を判別できるようなライブラリとか公開されてるコードありますか?
検索するとpythonだとImageHashってライブラリがあるんだけどGASで同じようなことしたい
0923デフォルトの名無しさん垢版2023/04/21(金) 16:25:28.26ID:vnxhj4My
ごめんgoogleスプレッドシートの質問スレがみつからずこちらで質問させてください。

シートのある列をユーザーごとの閲覧を制限かけたい
有効な方法ありますか?
0924デフォルトの名無しさん垢版2023/04/21(金) 16:53:56.40ID:8VcMj5ya
閲覧の制限はファイル単位でしか出来ないでしょ
シート、セル(列/行)単位は編集の制限しか出来ない
0925デフォルトの名無しさん垢版2023/04/21(金) 17:40:05.18ID:vnxhj4My
ありがとうございます。
確かに「表示」→「保護されている範囲」でできそうだったけど。やっぱりだめでした。
諦めて、もう一つリンクしたファイルのシート作ってそちらに閲覧されたくない列を追加します。
0926デフォルトの名無しさん垢版2023/05/02(火) 21:52:22.95ID:39G20EoK
Googleカレンダーに予定を追加するプログラムを使ってるんだけど、「場所を追加」ちゃんと場所を追加したいです

以下詳細

普通に手作業でGoogleカレンダーに予定を追加するときは、「場所を追加」に場所の名前を入力すると候補が出てきて、そこから選ぶと、そこに間に合うためには何時に家を出ればいいかの通知が来たり、Android版のGoogleカレンダーだと予定の背景がその場所の写真になったりします。

で、GASで予定を追加するとき、場所を指定するためにGoogleマップのURLを使ってるんだけど、それだとURLが表示されるのみで、上記の通知とか背景写真とかが実行されません。
公式ドキュメントでも {location: 'Conference Room'}とされており、Googleマップ上の場所を使う気がなさそうです。

ちゃんとした「場所の追加」は、ウェブ上でマウスで操作しないとできないのでしょうか?
0930デフォルトの名無しさん垢版2023/07/08(土) 12:42:20.50ID:CwJ0Byq0
質問させてください

Googleフォームの送信時イベントで入力された値を取るために
イベントを作成しましたが、どうしてもイベントパラメータがnullになってしまいます
Webページにあるサンプルではeからいろいろな情報が取れるように書かれているのですが、nullとなってしまう理由がわからずに困っています

function myFunction(e) {
Logger.log("myFunction start")
Logger.log(e)
}

— ログ
12:27:10 お知らせ 実行開始
12:27:10 情報 myFunction start
12:27:10 情報 null
12:27:10 お知らせ 実行完了
0932デフォルトの名無しさん垢版2023/08/22(火) 23:04:26.43ID:+ZplHR9+
GASではなく、スプレッドシートの質問なのですが、もし適切なスレッドがあったら誘導お願いします

セルに例えば「130409.67」と入力し、
表示形式>数字>通貨(端数切り捨て)
に設定すると、小数点以下が切り捨てではなく四捨五入されてしまいます。
これはなにか私の使い方がおかしいのでしょうか?
また、他の方法でも良いので、内部的には小数点を保持しつつ、表示上だけ小数点以下を切り捨てる(非表示)する方法があれば教えてください。宜しくお願いします。
0933デフォルトの名無しさん垢版2023/09/10(日) 09:27:06.36ID:yM7j2B0I
オhル
0934デフォルトの名無しさん垢版2023/09/22(金) 13:52:01.19ID:dkRHHNCe
GTKは糞
0935デフォルトの名無しさん垢版2023/09/24(日) 09:36:46.05ID:2YTVyUlC
君は失格
やり治せ
0936デフォルトの名無しさん垢版2023/10/20(金) 12:46:49.67ID:/M3RKJCH
GAS抜きで
0938デフォルトの名無しさん垢版2023/10/31(火) 16:30:00.40ID:qmiHWWBC
>>937
ありがとうございます
それを入力したセル(A1)の隣に、
=A1×8
とすると、24と出るので、内部で小数点以下を保持してないようです
0939898垢版2023/10/31(火) 17:43:19.30ID:F7pL/7Za
>>938
truncは切り捨てかな。
というかカスタム表示形式の # じゃ駄目なん?
0940デフォルトの名無しさん垢版2024/03/10(日) 15:35:26.40ID:H28l+VF2
スプレッドシートについての質問です。

SBI証券のマイページからポートフォリオのcsvファイルをダウンロードすることができます。
GASにより、自動で、ポートフォリオの円グラフを作りたいのですが、スクリプトはコンテナバインドではなくスタンドアローンでないと駄目でしょうか?
毎日、csvファイルをダウンロードして、円グラフを描く予定なので、コンテナバインドだと駄目ですよね?
0941デフォルトの名無しさん垢版2024/03/10(日) 15:38:07.27ID:H28l+VF2
でもスタンドアロンにすると、スプレッドシートを開くときに、ファイルのIDを指定しないと駄目ですよね。
このIDが毎日変わることになると思いますが、この部分をどうすれば楽ができるでしょうか?
0942デフォルトの名無しさん垢版2024/03/10(日) 15:55:50.28ID:vw/rAwFk
なんでコンテナバインドじゃだめなの?
トリガーで1日1回実行すればいいんじゃないの
0943デフォルトの名無しさん垢版2024/03/10(日) 16:29:51.77ID:H28l+VF2
>>942

自動でダウンロードして来るとかそういうことを想定していますか?
そういう技術はありませんので、手動でダウンロードしてきて、Google Driveにアップロードする。
これを毎日やろうと考えています。
そうするとファイル自体が毎日変わりますし、IDも変わってしまうのではないかと思います。
バインドを新しい他のファイルに引き継ぐことはできませんよね?
0944デフォルトの名無しさん垢版2024/03/10(日) 16:50:03.03ID:vw/rAwFk
>>943
ファイルIDが変わってもファイルを保存するフォルダが固定なら
そのフォルダのファイル一覧を取得すればいいんでは?
0945デフォルトの名無しさん垢版2024/03/10(日) 17:01:06.12ID:H28l+VF2
>>944

なるほど、ありがとうございました。
そういうことができるんですね。
ということは、スタンドアロンである固定したフォルダからファイルの一覧を取得する。
SBI証券からダウンロードしてきたcsvファイルは、その日の日付をファイル名とする。
ファイルの一覧からその日の日付のファイルをオープンして、円グラフを作成する。

ありがとうございました。
0946デフォルトの名無しさん垢版2024/03/11(月) 11:33:26.37ID:Voh59fAx
csvファイルに、

'+7441000

というデータがあります。

これをSpreadsheetとしてインポートすると、セル上で

+7441000

と表示されます。

先頭に「+」がついていますが、扱いは文字列ではなく、数字です。
この「+」をGASを使って削除したいのですが、どうすればいいでしょうか?
このセルを選択した状態で「fx」の右隣をみると「'+7441000」となっています。
0947デフォルトの名無しさん垢版2024/03/11(月) 21:30:14.93ID:Voh59fAx
>>946

なんとか解決しました。
0948デフォルトの名無しさん垢版2024/04/04(木) 12:51:32.09ID:q67OTvc3
getUi().showModelessDialog()の挙動おかしくなった?
他をクリックしたら閉じるようになったし移動も出来なくなった
バグですか?
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況