X



【MACRO】Google Apps Script 質問スレ【DRIVE】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0097デフォルトの名無しさん
垢版 |
2014/11/03(月) 19:27:50.34ID:p3gGK/5S
GoogleDRIVEでゴミ箱を削除してくださいとポップアップが出るようになったのですが
スマホからもpcからもゴミ箱が表示されません。
ゴミ箱はどこに表示されるのでしょうか。
よろしくお願いします。
0100デフォルトの名無しさん
垢版 |
2014/11/07(金) 17:42:40.98ID:qD5n5Xcy
>>93
もうそれ、サービス終わってるよ
0101デフォルトの名無しさん
垢版 |
2014/11/08(土) 11:59:45.01ID:UfYKgu7A
>>100
そうですか。。。。
MS-Accessみたいなことできるお手軽DB実現したかったのにちょっと残念です。DBやるならGAEとかしかないのかな。。。
0103デフォルトの名無しさん
垢版 |
2014/11/10(月) 08:44:52.32ID:9rz69vME
>>101
DBやるなら、AWSのRDSやらGoogle Cloud SQL、レンタルサーバのDBサーバ
など有償のものを使うしか手立てはないですよ。ローカルのサーバをDDNSで
外からアクセス出来るようにして、GAからアクセスさせるってのも手ではありま
すがね。
0105デフォルトの名無しさん
垢版 |
2014/11/10(月) 15:50:15.20ID:N/uHWaPu
2014-10-06 Angularが嫌い
http://mizchi.hatenablog.com/entry/2014/10/06/162103

AngularJSは覚えることが多過ぎてあきらめた。mustucheテンプレートはイケテル。
=>
vue.jsおし。
MEANはnpmエコシステム体験ツアーに便利。(そのまま実用に突き進むのはゴールデンハンマーの罠)



Vue.jsか日本語書籍をはじめノウハウの多いbackbone.jsがおすすめ。
Angular.jsは不自然なところが多い。JQueryのように自然に使えない。数年後にはEJB2のように滅んでいる感じ。



Angularそっちのけで、Vue.jsについて所感 2014-02-14
http://havelog.ayumusato.com/develop/javascript/e587-vuejs_impressions.html
2014-06-26 5分でわかるVue.jsと、jQueryで頑張ってはいけない理由
http://www.infiniteloop.co.jp/blog/2014/06/5min_vuejs/
Vue.js概要? 2014/04/25 - 2014/11/09
http://qiita.com/asip2k25/items/bd4bdccd5201d542953c
Vue.js v0.11の変更点(予定)まとめ Oct 7th, 2014
http://blog.koba04.com/post/2014/10/07/vue-js-v011-changes/
Vue.js
http://vuejs.org/

どこでも活躍できるテンプレートエンジン「Mustache」
http://blog.mach3.jp/2010/10/05/mustache-template-engine.html
2012-12-09 テンプレートエンジンmustacheを使ってみる
http://d.hatena.ne.jp/Kazuhira/20121209/1355042467
mustache
http://mustache.github.io/
0107デフォルトの名無しさん
垢版 |
2014/11/10(月) 16:49:41.10ID:N/uHWaPu
AngularJS入門の巻き
http://www.slideshare.net/itokami1123/angularjs-34533999
AngularJS入門の巻き2
http://www.slideshare.net/itokami1123/angularjs-beginner-20140629

AngularJS入門
http://dev.classmethod.jp/series/angularjs%E5%85%A5%E9%96%80/

AngularJS
http://js.studio-kingdom.com/angularjs
AngularJSの起動
http://js.studio-kingdom.com/angularjs/guide/bootstrap

AngularJS 入門 Qiita
http://qiita.com/lga0503/items/d8efddcad2574e1938f1
AngularJS の $locationProvider.html5Mode について Qiita
http://qiita.com/shogogg/items/542bd6d18f777bcc24bc

AngularJS's tutorial あなたとともにAngularJS (CoffeeScript)
http://lab.hisasann.com/AngularJSTutorial/
0111デフォルトの名無しさん
垢版 |
2014/11/19(水) 16:17:29.20ID:JZ2oYyd9
ライブラリ作って公開したけど
product ID が判り難いというか
import (resource) 管理が面倒臭い感じがする
0112デフォルトの名無しさん
垢版 |
2014/11/24(月) 10:56:25.69ID:LXRxquBl
Application Launcher for Drive (by Google)
この拡張機能が勝手にインストールされたぞ。

Web上のGoogle Driveからファイルをローカルアプリケーションで直接開けるらしいが、
何も機能しないし、そもそも右クリックメニューの中にローカルアプリは何も表示されない。

全く意味ねー
0113デフォルトの名無しさん
垢版 |
2014/11/24(月) 11:05:35.34ID:LXRxquBl
うゎ誤爆
0114デフォルトの名無しさん
垢版 |
2014/11/24(月) 11:07:33.14ID:I/tlYyaD
うゎ誤爆
0116デフォルトの名無しさん
垢版 |
2014/11/24(月) 12:38:47.81ID:JyotAVq+
書いたプログラムを Google Drive で同期したフォルダから
ローカルPCで開いてもプログラムがバックアップ出来てる訳じゃないんだね
0117デフォルトの名無しさん
垢版 |
2014/11/27(木) 09:13:58.26ID:oxY/sHU5
Google Apps Script で出力した HTML の中で
AngularJS 使おうとしたら
1.3 全く動作しない
1.2 一部動くがほとんどはまともに動作しない
使えねー
0118デフォルトの名無しさん
垢版 |
2014/11/27(木) 09:21:12.55ID:tn51YXgS
>>117
俺はjQueryを使ってるが、使えるコードと使えないコードがあるので、それを
うまく回避しながらやるのが腕の見せどころですよ。
0122デフォルトの名無しさん
垢版 |
2014/11/27(木) 20:46:04.08ID:LqnFWsaO
Vue.js 試してみたけどだめ

TypeError: Cannot define property:$set, object is not extensible.
TypeError: undefined is not a function

使えねー (GASが)
0125デフォルトの名無しさん
垢版 |
2014/11/28(金) 10:58:23.40ID:HA42UZYd
ちなみに、俺は結構やりこんでるが、入力補完やワークフローみたいな
ものも作ってるよ。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

<p><input type="text" id="hogehoge" /><br />

<script type="text/javascript">// <![CDATA[
$(function() {
var hogehogeTags = [
"あいうえお",
"かきくけこ",
"さしすせそ",
"たちつてと",

・・・・・ 中略 ・・・・・

"漢字1",
"漢字2",
"漢字3"
];
$( "#hogehoge" ).autocomplete({
source: hogehogeTags
});
});
// ]]&gt;</script>

これはテキストボックスに入力補完をスプレッドシートから持ってくる奴だが、
こういうのだったら動く。
0127デフォルトの名無しさん
垢版 |
2014/11/28(金) 11:52:19.42ID:LBNEaAKa
>>126
function doGet() {
return HtmlService.createHtmlOutputFromFile('htmledit')
.setSandboxMode(HtmlService.SandboxMode.EMULATED);
}

とか、

function doGet() {
return HtmlService.createHtmlOutputFromFile('htmledit')
.setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

とか
0128デフォルトの名無しさん
垢版 |
2014/11/28(金) 12:01:22.01ID:dYLaj0CI
以前はEMULATEDがデフォだったが
最近はNATIVEがデフォに切り替わった
というところまでは読んだ

このページ見るとNATIVEが書き換えないみたいなんだけど

https://developers.google.com/apps-script/guides/html/restrictions
Rewritten code

In the EMULATED sandbox mode, Caja inspects and substantially rewrites all HTML
and JavaScript before the page loads.
This results in a substantial slowdown in loading times relative to the newer NATIVE mode.
Because code is rewritten, it also becomes difficult to debug.

In NATIVE mode, although comments are still stripped from client-side code,
the code is only rewritten if it contains variables or named functions at the top level,
or if it uses the typeof operator to refer to a variable directly.
The examples below show how to avoid code rewrites in NATIVE mode.

✘Don't — code will be rewritten ✓Do — code will not be rewritten in NATIVE mode
図は逆だよね
0129デフォルトの名無しさん
垢版 |
2014/11/28(金) 12:06:18.29ID:LBNEaAKa
>>128
まぁ、だからといって、どちらも制限があるのには違いないけれどね。
あくまでも、ドノーマルで実行するよりかは制限が緩いので、使えるかも
って感じ。

なるべくシンプルに構築するのがHTML Servicesの基本だね。でなけれ
ば、UiApp Servicesを使えって話になってくると思う。
0133デフォルトの名無しさん
垢版 |
2014/11/30(日) 13:51:09.63ID:Q44JDfrW
遅すぎて使い物にならんね
0134デフォルトの名無しさん
垢版 |
2014/11/30(日) 17:10:58.86ID:Q44JDfrW
spreadsheet を DB 代わりに使ってみたけど
排他処理もロックも何もしないと
データめちゃくちゃになるなω
0135デフォルトの名無しさん
垢版 |
2014/11/30(日) 17:14:32.64ID:Q44JDfrW
ということでメモ
https://developers.google.com/apps-script/reference/lock/lock
https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/
http://stackoverflow.com/questions/12808674/locking-script-when-accessing-spreadsheet-doesnot-work
http://stackoverflow.com/questions/16075446/how-to-protect-the-google-app-script-code-in-google-spreadsheet
http://ramblings.mcpher.com/Home/excelquirks/dbabstraction
0136デフォルトの名無しさん
垢版 |
2014/12/01(月) 06:51:47.55ID:GLoHGVkg
ロックかからんし
ScriptProperties が deprecated になってるし
なんなのこれ
無理して使うもんじゃないな
0137デフォルトの名無しさん
垢版 |
2014/12/01(月) 07:08:43.79ID:GLoHGVkg
lock中の処理で
SpreadsheetApp.flush();
入れたら解決した
なんか応答も速くなった希ガス
0138デフォルトの名無しさん
垢版 |
2014/12/01(月) 09:25:06.84ID:guOSxUv1
馬鹿には無理
0139デフォルトの名無しさん
垢版 |
2014/12/01(月) 10:12:28.09ID:ikZ1X/ON
(前文略)
1. 突然変わる仕様

今回のAdvent Calendar中にも大きな仕様変更があり、おもいっきり影響をウケました。
GAS以外のGoogle系サービスは裏側の仕様が変わるので変わることを意識しておかないと精神的に病んでしまいます。

例えば今回大きかったのは
今まで.gs

var dateString = Utilities.formatDate(new Date() , 'JST' , 'yyyy/MM/dd HH:mm:ss');
Logger.log(dateString);

という風に書くと「日本時間(JST GMT+9)の日付文字列」が取得できました
しかし仕様が変わりこのJST指定をしてもGMT+9の値が取得できなくなりました。
これから.gs

var dateString = Utilities.formatDate(new Date() , 'Asia/Tokyo' , 'yyyy/MM/dd HH:mm:ss');
Logger.log(dateString);

と書く必要があります。

これ以外にもちょこちょこと仕様変更があり、コードを直す必要があったりします。
どうすればいいの?

http://qiita.com/soundTricker/items/21d3a39222fb1edbce57
0141デフォルトの名無しさん
垢版 |
2014/12/01(月) 12:23:57.99ID:GrWyVyTu
publish した直後は反応が遅かったりアクセスエラーになるなぁ
数分待ってからアクセスるると比較的速いしエラーも減る
(それでも我慢できる速さってレベル)

GAS を保存するサーバーと公開されるサーバーが違ってたり
同期取ってたりしてる感じだな・・・
0142デフォルトの名無しさん
垢版 |
2014/12/02(火) 08:18:47.93ID:m/U+kAA0
>>139
そもそも、JST指定する方法が旧式で、おかしかったわけで。今回から
正しい取得方法に修正されたってだけの話。仕様変更が勝手に発生するのは
いつもの事だが、それについては指摘はオカシイ。

>>140
非推奨になってたって 随分前から非推奨になってるんだが・・・・
移行期間中だぞ。今は。インテリセンスの候補でも二重線引っ張ってあった
だろうが。今更何を。
0143デフォルトの名無しさん
垢版 |
2014/12/05(金) 08:40:33.92ID:uibbdYqE
>>133
遅くなる理由
https://developers.google.com/apps-script/guide_libraries
Warning: A script that uses a library will not run as quickly as it would
if all the code were contained within a single script project.
Although libraries can make development and maintenance more convenient,
you should avoid them in projects where speed is critical.
Because of this issue, libraries should not be used in add-ons.

https://developers.google.com/apps-script/best_practices#avoidLibraries
https://developers.google.com/apps-script/add-ons/
0146デフォルトの名無しさん
垢版 |
2014/12/05(金) 12:48:37.41ID:3N+Ki0BW
>>144
まぁ、例え効率の良い書き方をしたとしても、それでも全然ローカル
でやるのに比べたら、比べるまでもなく遅いけれどね。
0147デフォルトの名無しさん
垢版 |
2014/12/05(金) 17:28:33.29ID:X46M6Pii
プログラムは全くの素人なのですが、フォームに入力された内容をメールで送るスクリプトをネットからコピペしました。最初は上手くおくれたのですが、途中から
http://i.imgur.com/8hI4jzt.jpg
のようなエラーが出てメール送れなくなりました。解決策がわかりません。ご存知な方、教えて頂けますか?
0150デフォルトの名無しさん
垢版 |
2014/12/07(日) 18:52:37.92ID:uc0Y93wp
新しい Google スプレッドシート
[ツール] メニュー > [スクリプト マネージャ]

スクリプト マネージャが無いんですけど、どこへ行ったの?
0154デフォルトの名無しさん
垢版 |
2014/12/10(水) 13:50:01.10ID:evPa2cl4
状況が変わった

ログイン出来るようになったけど
ルートの画面で

Google Drive was unable to load your items. Please refresh to try again. (Dismiss)

って出て何も操作出来ない

どうみても輻輳です本当にありがとうございました
0155デフォルトの名無しさん
垢版 |
2014/12/12(金) 20:12:42.74ID:ZKEOL7uD
google plus apiもここで良いのかな?
こういう大量に画像があるページから画像をぶっこ抜こうと思ってjson取得したんだけどな、15枚しか画像リンクを教えてくれないんだわ
https://plus.google.com/109057690948151627836/posts/6Q6cv5KNYef#109057690948151627836/posts/6Q6cv5KNYef

これがjsonの抜粋
http://xxxxxxxxxxxx.net/_/86/20141212201047-0.txt

やり方分かる人いる?
0157デフォルトの名無しさん
垢版 |
2014/12/13(土) 10:37:05.12ID:LHF4FOqU
>>156
アクティビティーのnextTokenは送ってるが、画像にもnextToken送れるんか・・?
0158デフォルトの名無しさん
垢版 |
2014/12/16(火) 13:32:07.41ID:PuXxa6T9
尾骶骨
0159155
垢版 |
2014/12/20(土) 15:58:34.92ID:2lHjoIS9
自己解決した。スレ汚しスマソ
0160デフォルトの名無しさん
垢版 |
2014/12/21(日) 17:54:05.71ID:gQMH/TzB
トリガーをいくつか設定してみたけど
違うプロジェクトに同じ名前の関数があるとき
トリガーの一覧には関数名しか出て来ないので
どのプロジェクトの関数が呼ばれるのかあとで判らなくなるな
0169デフォルトの名無しさん
垢版 |
2015/01/12(月) 13:52:24.61ID:MUt+Twlt
Google Drive のゴミ箱に溜まってたファイルを
永久に削除
を選んで消したのに残り容量が増えないぬ
先週くらいまではゴミ箱空にしたら容量増えたのに
0170デフォルトの名無しさん
垢版 |
2015/01/14(水) 10:13:25.29ID:pWmctPUO
>>169
恐らくだが
どのフォルダにも属していない、検索の時だけ出てくるファイルがあるよ。消したつもりになってるだけでね。
0171デフォルトの名無しさん
垢版 |
2015/01/14(水) 13:03:30.08ID:EnBoJmyV
trash からも delete forever で確実に削除してたのに
さっきログインしたら trash にあった
改めて消したら容量増えた
ありがとう

Google Drive ってたまにバグるみたいだぬ
0172デフォルトの名無しさん
垢版 |
2015/01/20(火) 07:56:06.92ID:F6HHv4j5
勝手にアップデートされて以来
GoogleDriveは執事として無能な
時間泥棒に成り下がってしまった
0174デフォルトの名無しさん
垢版 |
2015/03/14(土) 19:02:02.06ID:EXR76peq
Siteで新規ページ作成で自動生成されるurl文字列をscriptで再現する方法はないでしょうか?

たとえば「試験-しけん-シケン」と入力すると自動では「shi-yan-shiken-shiken」というURLになるけど
このルールでスクリプトから新規ページ作成を行いたいと思っているのですが
0175デフォルトの名無しさん
垢版 |
2015/03/16(月) 02:46:33.19ID:1GyT2oWU
同じ名前でもう一つ作ってみ?
0176デフォルトの名無しさん
垢版 |
2015/03/18(水) 22:55:28.68ID:fCXDEV+f
GASで任意のURLを開くことはできますか?
スプレッドシート上でも別タブでもどちらでも構いません。
0178176
垢版 |
2015/03/20(金) 15:56:58.40ID:+pnIcR/c
やはりリンク作ったりするのが精一杯なんですね。
わかりました。
0179176
垢版 |
2015/03/20(金) 17:37:45.26ID:+pnIcR/c
HtmlService.createHtmlOutputにiframeタグを書いても
インラインフレームの中に何も表示されないのは仕様ですか?
0181176
垢版 |
2015/03/22(日) 21:40:15.35ID:Exm92v9O
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
を付けてみてもダメでした。
もちろんNATIVEもダメでしたし、本当にあきらめるしかなさそうですね。

ちなみに表示させようとしていたページのURLは以下です。
http://www.google.com/search?btnI=I%27m+Feeling+Lucky&;lr=lang_ja&ie=UTF-8&oe=UTF-8&q="+ss.getActiveCell().getValue()
0182デフォルトの名無しさん
垢版 |
2015/03/26(木) 11:07:18.75ID:r/Xr85WG
Googleドライブ上にある複数のxlsを読み込んで、指定した文字を検索するhtmlをドライブ上で共有したいのですが
この場合どうすればいいのでしょうか?script.google.comとかサッパリでした
ある程度の英語とjavascriptは出来るので「ココ嫁」みたいなリファレンス貼ってくれるだけでも助かります
0187デフォルトの名無しさん
垢版 |
2015/03/26(木) 20:07:09.55ID:xZ2N6kXB
>>186
xlsxの全文検索をしてみましたが、出来ました。
fullText containsオプションを使えば可能です。

ただし、たけのこという文字がセルに入ってる場合、「たけのこ」ではヒットしますが、「たけ」ではヒットしません。そういう仕様だそうです。以下に完成品をまとめておきましたので、参考にしてみてください。
http://goo. gl/coMk0P
0188182
垢版 |
2015/03/27(金) 00:58:25.79ID:DYcS+Siy
度々すみませんGoogleドライブに
・1.xls〜100.xls
・Data_list.xls
とテキストシートがあって、1-100.xls上で行or選択範囲を指定して、その範囲内のテキストを使ってData_listで検索をし、結果を返すというモノを作りたいのですが

@-1〜100まで全部一々スクリプトエディタで作成しなければならないんでしょうか?使いまわしできます?
A-図形描写+スクリプト割り当てでイベントハンドラ作成する方法以外にシートから関数呼び出す方法はないんでしょうか?
B-図形描写+スクリプト割り当てを1〜100まで毎回作成するの大変なんで使いまわしとかできないんでしょうか?
C-関数の引数に行や選択範囲を指定できますか?

本当に初歩的な質問ばかりですみません
openByUrl(Data_list)で読み込んでforで全部回す方法でmatchやったら検索は出来ました
0189デフォルトの名無しさん
垢版 |
2015/03/27(金) 08:27:15.70ID:XOU4xnaE
>>188
スクリプトはライブラリ化すれば使い回しが出来ます。
http://goo. gl/ExZZSb
0191デフォルトの名無しさん
垢版 |
2015/04/06(月) 19:06:09.55ID:Uo28IzYD
script.googleにてディレクトリに存在するファイル全て開いて検索するプロジェクトのgsファイルを作ってるんですが
コード.gsて一度に開けるファイルの数や容量の制限ありますか?
0192デフォルトの名無しさん
垢版 |
2015/04/07(火) 11:43:06.04ID:Dj35uwLZ
ちょっとした質問なんですけどDriveApp.getRootFolder()みたいに共有アイテムにある「textフォルダ」を取得する方法ってないですか?
0194デフォルトの名無しさん
垢版 |
2015/04/11(土) 21:16:39.83ID:yuSJQZvz
1.gmailの受信メールをチェック

2.特定タイトルのメールの送信者を抽出しリストアップ

3.別のリストとマッチングさせメール未送信者を特定

4.未送信者に注意メールを送信

GAS初心者なのですが
上記のようなシステムを構築したいと考えています。
1.2.4はGASとスプレッドシートを使えば簡単に実装できそうなのですが
3もGASやappsのみで構築可能でしょうか?
スプレッドシートのマッチングについて
少し調べて見ましたが、明確な回答は見つかりませんでした。
よろしくお願いします。
0195デフォルトの名無しさん
垢版 |
2015/04/13(月) 07:45:32.11ID:eHLkbahF
>>194
可能

普通にリニアサーチでメアドリストと1つづつイコールかどうか
確認するループを作ればいいだけ
0197デフォルトの名無しさん
垢版 |
2015/05/20(水) 20:15:39.64ID:L+8WGw0p
最近始めたんだけどこれmydriveにアップしたExcelを読み込む事は出来ないのかな
getDataAsString()でも文字化けしたのしか取得できないし
スプレッドシートに変換すりゃいいんだろうけどそのまま読み込む方法ないのかね
0200デフォルトの名無しさん
垢版 |
2015/05/21(木) 09:50:23.52ID:x9iUxaW9
エクセルはどこでも話題になるけどDriveApp.searchFiles()で一応文章検索はできるから
セルのstring情報はどっかに記録されてる
ただ引き出して扱えるかどうか知らん
0201デフォルトの名無しさん
垢版 |
2015/05/21(木) 10:56:25.53ID:ESp1pCeJ
馬鹿には無理
0205デフォルトの名無しさん
垢版 |
2015/05/27(水) 08:07:09.69ID:lvaBWQ33
>>204
君はGoogleのドキュメントがろくにメンテされてないこと知ってんの?
それと、GASで使うのにOAuthなんて使わないよw

JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに
関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え
ない発言だなw
0206デフォルトの名無しさん
垢版 |
2015/05/27(水) 11:08:24.77ID:fMt5EoRl
> それと、GASで使うのにOAuthなんて使わないよw
ひょ、標準APIとの違いも解らない奴がココに居るのか
ちょっとキミにはこのスレちょっと早い
0208デフォルトの名無しさん
垢版 |
2015/05/27(水) 15:16:08.57ID:jmeRjzK/
知らないから自演も満足に出来ないんだろうが
煽り方が下手だと思う
0209デフォルトの名無しさん
垢版 |
2015/05/27(水) 16:25:43.57ID:smOTLbR3
>>206-207
だから、使ってからほざけよ。

コード書いてみ?GAS内でDrive API使うコードをな。
実際に開発やってる奴に、釈迦に説法って言葉覚えておけよ三流。
0210デフォルトの名無しさん
垢版 |
2015/05/27(水) 16:29:32.25ID:smOTLbR3
>>204
それとお前。
OAuth1.0だから何?そんなもの自分で2.0の実装でも換装すりゃいいだけの
話だろww

馬鹿なの?それとも2.0のコードでも書けとか言ってるわけ?馬鹿には無理だ
から引っ込んでろ
0211デフォルトの名無しさん
垢版 |
2015/05/27(水) 20:42:22.92ID:iPQChm+t
なんか急にonEditのe.userにメールアドレスが入ってこなくなったんだが
同じ現象の人いる?
0212デフォルトの名無しさん
垢版 |
2015/05/28(木) 09:53:52.42ID:/8nOg4qQ
これで良くね
ttp://stackoverflow.com/questions/26702330/why-does-google-apps-script-return-a-url-rather-than-a-pdf-file-when-i-try-to-cr
0213デフォルトの名無しさん
垢版 |
2015/06/08(月) 08:54:21.97ID:0Vy1Z1yY
>>211
そんなのしょっちゅうあるぜ?
session.userなんてメアド取れなくなったりとかね。
Googleって馬鹿だからバグ採りもせずにデプロイしてやがるのでこういうことがGoogle Apps for Workでも起きていてもんだいになってる。
0214デフォルトの名無しさん
垢版 |
2015/06/08(月) 13:38:40.43ID:rJB8iCDI
Googleって独りよがりだよな
0215デフォルトの名無しさん
垢版 |
2015/06/11(木) 09:07:55.30ID:DJZgiAWM
書式設定を変えるようなスクリプトを作っても反映されないんだけど、
スプレッドシートの既知の問題?
例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても
折り返してくれない。
(スクリプト実行後、ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す)

function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('A:A');
range.setWrap(true);
}

この問題って、フォームから文字列が入力されても既に書式設定してあるセルで
同じ事が起きるんだけど、地味に困ってる。
0216デフォルトの名無しさん
垢版 |
2015/06/12(金) 10:07:42.64ID:7lwiQU6T
TwitterBotを作成しているのですが
OAuth1 for Apps Script
https://github.com/googlesamples/apps-script-oauth1/blob/master/samples/Twitter.gs
にCONSUMER_KEYとCONSUMER_SECRETを入れてrunを実行しても投稿されません。
ログには Open the following URL and re-run the script
表示されるアドレスにアクセスするとSuccess!と表示されますが投稿されません。
どうしたら投稿できるようにできますか?
0217216
垢版 |
2015/06/12(金) 10:12:38.54ID:7lwiQU6T
>>216
動きました。すみません。
0219デフォルトの名無しさん
垢版 |
2015/06/12(金) 17:28:28.59ID:7lwiQU6T
atomのlinkのhrefを取得したいのですがどうすればいいのでしょうか

function kochiRSS() {

var sheet = SpreadsheetApp.getActiveSheet();

var row = 1;

var feedURL = 'http://www.pref.kochi.lg.jp/news/index.atom';

var xml = UrlFetchApp.fetch(feedURL).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');

var entries = root.getChildren('entry', atom);

for(i in entries) {
var title = entries[i].getChild('title', atom).getText();
var link = entries[i].getChild('link', atom).getValue();
var updated = entries[i].getChild('updated', atom).getText();

sheet.getRange(row,1).setValue(title);
sheet.getRange(row,2).setValue(link);
sheet.getRange(row,3).setValue(updated);

row++;
}
sheet.sort(3, false);
}
0220デフォルトの名無しさん
垢版 |
2015/06/12(金) 18:11:48.05ID:qp6MkQCv
.getAttribute('href').getValue();
0221219
垢版 |
2015/06/12(金) 20:37:23.23ID:RT2PlkdQ
220
できましたどうもありがとうございます。
0222デフォルトの名無しさん
垢版 |
2015/06/13(土) 03:16:47.88ID:NUKk6CPY
どういたしまして
0223219
垢版 |
2015/06/13(土) 08:02:49.41ID:YFXshuK4
たびたびすみません。
RSSを取得するプログラムを作っているのですが

RSS2.0は
var items = root.getChild('channel').getChildren('item');
ATOMは
var entries = root.getChildren('entry', atom);
で取得できるのですが
RSS1.0だとitemが<item rdf:about="記事のURL">なため
var items = root.getChildren('item');
では取得できません。
どういう書き方にすれば取得できるようになるのでしょうか?
0224デフォルトの名無しさん
垢版 |
2015/06/13(土) 08:38:19.04ID:NUKk6CPY
馬鹿には無理
0226デフォルトの名無しさん
垢版 |
2015/06/14(日) 06:25:18.68ID:Gz1SNEoH
馬鹿には(回答は)無理
0229デフォルトの名無しさん
垢版 |
2015/06/15(月) 20:34:44.01ID:TKCLtNo1
正直、DOM系の話題はなしにしたいものだ
DOMの話題ってjsの使い方一辺倒になっちまうから
GASそのものの本質を追究する姿勢が培われなくなってしまう
0230デフォルトの名無しさん
垢版 |
2015/06/15(月) 20:57:28.70ID:vJyBnBQX
GASはハウツー的な日本語ドキュメントが少ないから仕方ないかと
誰かその辺りをまとめてくれると(俺も)助かるんだがなー…(チラッチラッ
0232223
垢版 |
2015/06/17(水) 05:49:31.92ID:pjaGN1aW
ありがとうございます。
rdf:aboutのようなのは名前空間というみたいで
XmlService.getNamespaceを指定すると使えるようです。
詳しくはこちらに載っていました。
https://msdn.microsoft.com/ja-jp/library/aa468565.aspx
0233デフォルトの名無しさん
垢版 |
2015/06/17(水) 14:14:39.78ID:T4rbUCsj
いやここはGASのスレだしw
XMLの基本を鼻高々に解説されても
0235デフォルトの名無しさん
垢版 |
2015/06/30(火) 15:54:55.56ID:jfSOFpG/
google apps script のウェブアプリケーションの公開するとき
指定したグーグルアカウントだけに利用させるって出来ないんですかい?
共有でそういうのあったんですけど、共有はコード見れるとかそういうのだったんで
0236デフォルトの名無しさん
垢版 |
2015/06/30(火) 17:35:30.60ID:0T0Q+C6j
スレ違いだけどできないはずはないと思うよ
appsにアカウント登録できるはず
0237デフォルトの名無しさん
垢版 |
2015/07/01(水) 07:45:04.29ID:WrSpGcQO
>>235
1) googleアカウントでログインしてるユーザーだけに実行させることが出来る
2) アプリケーション側でどのアカウントで実行されているか把握することが出来る

1) と 2) を組み合わせれば可能
0238235
垢版 |
2015/07/01(水) 15:27:56.64ID:s1huTgGg
出来たよありがとう
"無ければ作れ"がGASでも通用したとか最高だ
0240デフォルトの名無しさん
垢版 |
2015/07/04(土) 14:34:59.39ID:PdgAmMn6
GASに初トライしていて問題にブチあたりました。
解決方法があれば教えてください。


■やりたいこと
スプレッドシート内で
外部ページ情報を取得しリアルタイム・もしくはインターバル更新表示しい。
基本は自動更新

■更新条件
スプレッドシートを開いた
スプレッドシートのセルにユーザーから入力があった。
の両方です。

■ためしたこと。
1.=ImportXMLを使って取り込み
 単純な目的は果たせるがセルに埋め込むと取得データを加工するにしても限度がある。
また、同じURLを指定したセルが複数ある場合、同じデータなのにアクセスさせるのが無駄
2.GASでImportXML相当のことをしてみる
 セルから呼び出せる関数でUrlFetchApp.fetchを使ってみる。
 当初の目的は果たせるようになったが、セルの数が多く、
 またスクリプト実行テストを繰り返しているとあっというまに1日の呼び出し回数制限に達してしまう(無料アカなので2万回)
3.呼び出し制限に達しないようにするための工夫
 URLから取得した情報をプールしておき、前回取得からのインターバル時間を経過したら再取得してキャッシュ更新。
 または、キャッシュに存在しないデータを要求された場合もキャッシュ更新。
 キャッシュ場所は、自分のスプレッドシート内にcacheシートを生成してそこに書き込んでおく。
4.3までのロジック実装は完了し、スクリプトエディタの関数実行テストまでは正常完了

続きます。
0241デフォルトの名無しさん
垢版 |
2015/07/04(土) 14:44:48.33ID:PdgAmMn6
4からが問題でして、エディタ内の関数単体テストでは、データ取得・キャッシュシート生成まで問題なく動作しました。
 しかし、これの関数をセルから呼び出そうとするとエラーになります。

エラーはシートに対して操作権限がないといわれます。
調べたところセルで関数を呼び出した場合、
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cacheSheet = ss.getSheetByName( g_stocksSheetName );
で取得したシートに対して、作成・修正・削除などの操作が出来ないようです。
つまりセルから呼び出した場合オブジェクトの参照関数しか呼び出しが許可されない?
ss.insertSheet( 'cacheSheet' )
とか
cacheSheet.getRange( 1, 1 ).setValue( new Date() );
もダメでした。

5.イベントハンドラを使ってみる
しょうがないので、書き込み権限を与えてくれそうな仕組みがないかテストしていたところ
onEvent,onOpenなどならいけそうだったので、
onEventから呼び出してみました。
すると、シート作成・データセットまではうまくいきますが、
UrlFetchApp.fetchでエラーになっているらしく、
上流で捉えた例外は
fetch を呼び出す権限がありません
でした。
0242デフォルトの名無しさん
垢版 |
2015/07/04(土) 14:54:35.26ID:PdgAmMn6
6.キャッシュの保存場所
自分に書き込めない場合、どっかに保存できないの?と思い調べてみると
ScriptDb とか言うのがあるみたいですが、サービス終了予定の機能ぽいですし、
Google Cloud SQLとかいうのを使うしかない?有料??

■知りたい事
・1〜6の流れで問題となっているアクセス権を解決できる方法はありますか?
・無理な場合の代替え手法はありますか?
・そもそもアプローチが間違っている、こうしたほうが良いよ。
という感じでうs。

このまま、いろいろ渡り歩いていても遠回りになりそうな予感なので質問してみました。
よろしくお願いします。
0244240
垢版 |
2015/07/06(月) 03:19:41.60ID:c4e3DSSP
>>243
> >>242
> htmlservice + oauth2
ありがとうございます。
調べてみます。
0245デフォルトの名無しさん
垢版 |
2015/07/07(火) 01:32:45.09ID:OGGfcKdI
htmlからツイにつぶやくのをやってたら
(>_<)この顔文字が(&gt;_&lt;)こんななってたぶんそのせいででエラー吐くんだけどこれはreplaceすればいいのかな?
こういう表記になる文字ってたくさんあるのかな?
0250240
垢版 |
2015/07/12(日) 18:50:40.39ID:yhZDzWcx
>>243
> >>242
> htmlservice + oauth2
あれから調べてみましたが、これらを使ってどうアプローチしていいか分かりませんでした。
どういうアプローチを取って良いのか、もう少し詳しく教えていただけないでしょうか?

自分が上でやっていてダメだったアプローチは以下のAuthorization modesをみると納得なのですが
https://developers.google.com/apps-script/add-ons/lifecycle

これらの状況の中でどうやって目的を達成していいか分かりませんでした。
Htmlservice, oauth2ということだったので、
外部サイト情報から取得したキャッシュをHtmlにしてGoogleDrive側に保存すればいいのかな?
とか思っていたのですが、
AuthMode.LIMITEDやAuthMode.CUSTOM_FUNCTIONでは他のサービスへのアクセスは
Any services that don’t access user data
とのことで、キャッシュを書き込めないようです。
実際に試してみましたが、スクリプト単体テストではOKでしたが、イベントハンドラから呼び出すとDrive周りの関数で権限がないといわれました。

oauth2に関してはいまいちよく分かりませんでした。
他社サービスIDなどで別サイトのサービスにアクセスする場合などの認証などに使ったりするようですが、
Googleのアカウントで自身にログインして何かをしろという事でしょうか?

どちらにしろ、AuthMode.FULLで行えるような権限を得られないと、
・キャッシュを作るための外部サイトアクセスとコンテンツ取得
・取得したコンテンツから生成したキャッシュデータの保存(シートorファイル)
が実現できないと思うのですが、どうでしょう?
0251デフォルトの名無しさん
垢版 |
2015/07/12(日) 19:09:03.00ID:slCoB0p4
設定間違えてるに+1
0252デフォルトの名無しさん
垢版 |
2015/07/13(月) 17:53:46.10ID:UxTEJ+9t
node.js / io.js 動けばいいのにね
0254デフォルトの名無しさん
垢版 |
2015/07/19(日) 04:21:49.78ID:eNaDFGYO
分かる人がいたら教えて下さい

function upload() {
var clientId = '*************';
var imgUrl = 'http://www.google.co.jp/images/srpr/logo11w.png';
var service = getService(); //aouth2のなんか
if (service.hasAccess()) {
var url = 'https://api.imgur.com/3/image';
var response = UrlFetchApp.fetch(url, { //ここでエラーが出る
method: 'post',
headers: {
Authorization: 'Client-ID ' + clientId,
},
data: {
image: imgUrl,
type: 'URL'
}
});
var result = JSON.parse(response.getContentText());
return result;
} else {

こういうエラーが出ます
{"data":{"error":"No image data was sent to the upload api","request":"\/3\/image","method":"POST"},"success":false,"status":400}
どこが間違えてるんでしょうか

imgur apiのページ
https://api.imgur.com/
0255デフォルトの名無しさん
垢版 |
2015/07/19(日) 05:55:09.18ID:EU0ROg42
ttp://www.google.co.jp/images/srpr/logo11w.png
404
The requested URL /images/srpr/logo11w.png'; was not found on this server.
0257デフォルトの名無しさん
垢版 |
2015/07/19(日) 07:23:46.52ID:EU0ROg42
さっきはエラってたが
0259デフォルトの名無しさん
垢版 |
2015/07/19(日) 14:52:50.12ID:Npxm1YBj
data: {
type: 'base64',
image: 'hogehoge(base64data)hogehoge'
}

ためしてみたけど

400
Image format not supported, or image is corrupt.

なんぞこれ
0260デフォルトの名無しさん
垢版 |
2015/07/19(日) 16:20:37.89ID:MA6NEEKT
>>254
OAuth2の認証系をしっかり組んでないからじゃないかね。
http://wp.me/p5KJV2-9k
0263デフォルトの名無しさん
垢版 |
2015/07/20(月) 01:12:32.08ID:M+3F+JJV
読んでも全然わかんないや(´・ω・`)
ツイとかはコピペでなんとかなったけどimgurはあんまり見つかんないからやっぱ自力じゃ無理なのかな
0264デフォルトの名無しさん
垢版 |
2015/07/20(月) 01:28:27.60ID:M+3F+JJV
getの方は出来たんだけどなぁ
もうちょっと読んでみよ英語分かんないけど

function getImage(id) {
var service = getService();
if (service.hasAccess()) {
var url = 'https://api.imgur.com/3/image/' + id;
var response = UrlFetchApp.fetch(url, {
method: 'get',
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
var result = JSON.parse(response.getContentText());
return result;
// Logger.log(result);
} else {
var authorizationUrl = service.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s',
authorizationUrl);
}
}
0267デフォルトの名無しさん
垢版 |
2015/07/20(月) 23:29:34.40ID:M+3F+JJV
どこに付ければいいか分からないので適当に色々なところに付けてみましたが出来ませんでした
もう少し詳しくお願いします
0268デフォルトの名無しさん
垢版 |
2015/07/21(火) 20:08:20.82ID:S4WMmXN0
headers: {
Authorization: 'Client-ID ' + clientId,
Content-Type: 'application/json'
},
0269デフォルトの名無しさん
垢版 |
2015/07/21(火) 22:14:27.88ID:cjPlPdED
>>268
そう書くと保存の時に「プロパティ ID の後に : がありません。」ってエラーが出るんですけどなんでだろう
headers: {
Authorization: 'Client-ID ' + clientId,
Content-Type: 'application/json'    ←この行
},
0273デフォルトの名無しさん
垢版 |
2015/07/24(金) 15:37:18.28ID:YFrH4Ww5
やさしくやさしくやさしくね
0275デフォルトの名無しさん
垢版 |
2015/08/20(木) 11:36:44.28ID:pV6cw7bo
詰んってる
0277デフォルトの名無しさん
垢版 |
2015/10/15(木) 18:03:33.74ID:bdlPZJI1
py
0279デフォルトの名無しさん
垢版 |
2015/10/28(水) 22:28:05.44ID:58PwIK9B
独自関数(自作)でbackGroundの色が特定の色の場合にsumする関数をつくりたいんだけど、
引数でバックグラウンドの色ってとりだせるの?

というより、適当に作ったんだけど、スクリプト保存しないと独自関数を使用しているセルが更新されなくて困ってる。
0280デフォルトの名無しさん
垢版 |
2015/11/05(木) 20:42:24.52ID:6t/dd9qY
何でもできるようになってきて
すごくありがたく使わせてもらってるんだけど
実行速度が遅いのは何とかしてほしいなぁ
0281デフォルトの名無しさん
垢版 |
2015/11/06(金) 18:30:44.33ID:F7EIvq3A
遅いね
あとREMOTE_ADDRとか取れなかった気がするのも痛い
0282デフォルトの名無しさん
垢版 |
2015/11/18(水) 03:36:46.11ID:CE5+T1br
スプレッドシートの0:00とか時間表記でのものを時と分に分けて数値として扱いたくて
getRangeで2次元配列で読み込んで時間の部分をsplit使って:で分けました
でもSSの時間部分の書式が日付になるとWed Nov 18 2015 00:00〜みたいなDateで読み込まれるし
書式なしテキストにするとStringになって数値として扱えないんです(8:00だったら8と00になって足すと800になる)
どうすればいいでしょうか?
0284デフォルトの名無しさん
垢版 |
2015/11/18(水) 07:26:46.79ID:nLopjri3
>>282
固定させたいカラムを晒してくれないとわからない
カラムによってはその機能が備わってるみたいだし
0287デフォルトの名無しさん
垢版 |
2015/11/27(金) 15:20:14.09ID:c/N8jVfb
火事お見舞い申し上げます。
0288デフォルトの名無しさん
垢版 |
2015/12/03(木) 15:49:15.48ID:5y9yFaIO
test
0289デフォルトの名無しさん
垢版 |
2015/12/16(水) 14:14:14.45ID:kHfROXFw
グローバルでconstを使うと、
「TypeError: 定数 **** の再宣言。」
とエラーが出るのですが、グローバルではconstは使えないのでしょうか?
0291デフォルトの名無しさん
垢版 |
2015/12/19(土) 21:20:25.74ID:0J9ouBIM
シート上のデータをまとめてカレンダーに移したいのですが
GASからbatch requestで処理できますか?
もしできるなら似たような事例でコードがわかるものを教えてください
0293デフォルトの名無しさん
垢版 |
2015/12/20(日) 16:16:42.06ID:8RLYRFXT
どうやんの
0295デフォルトの名無しさん
垢版 |
2015/12/22(火) 14:35:21.60ID:Cg7y4/KF
>>290
すみません、説明が不足していました。
constで定義した名前は他の場所では宣言していません。
ただ、グローバルでconstを使うと、再宣言していない定数でも
「TypeError: 定数 **** の再宣言。」とエラーになってしまいます。
(function内などのスコープではconstは普通に使えています。)

constでなくvarを使うと再宣言のエラーは出ません。
また、const指定する定数の名前は何にしても再宣言のエラーが出ます。

constの使い方が間違っているのかもしれませんが、何かおかしい点があれば教えていただけないでしょうか?
0296デフォルトの名無しさん
垢版 |
2015/12/22(火) 15:36:52.19ID:WRvltcSm
すごく初歩的な質問だと思うのですが原因が解りません
どなたか教えて下さい

下記サイトを参考にスクリプトを作成したのですが
http://chaika.hatenablog.com/entry/2015/09/03/143622
デバッグすると一番最初の
var ss = evt.source.getActiveSheet();
の箇所で
TypeError: undefined からプロパティ「source」を読み取れません。(行 3、ファイル「コード」)
と出てしまいます

ググったところ、スクリプトの作成元が間違っていると出たりするようですが
参考サイトではスプレッドシートから作成、とあるので間違いではないと思います
かといって何が問題なのか解りません
0297デフォルトの名無しさん
垢版 |
2015/12/23(水) 08:28:53.59ID:2F8TsTF+
3. エディタのリソースをクリックして、**現在のプロジェクトのトリガー**を選択
4. 実行をonEditEvent、イベントをスプレッドシートから・編集時 にして保存
0300デフォルトの名無しさん
垢版 |
2015/12/24(木) 16:49:29.65ID:4YM2CMve
あるある
0301デフォルトの名無しさん
垢版 |
2015/12/24(木) 20:07:56.13ID:Dg+ThN48
>>299
296です
私へのレスでしょうか?
何かやり方が間違っているのでしたら教えていただけませんか?
0302デフォルトの名無しさん
垢版 |
2015/12/24(木) 21:14:24.02ID:Icnst7JF
いや、俺もトリガーの機能をここのやり取りで知ったぐらいだけど、
デバッグボタンを押すだけだったら
onEditEvent();
と呼び出されるだけじゃない
evtがundefinedなのはそのせいかなと思って
実際どうなん?

正式なやり方はしらんけど、Loggerでトリガーが起動された時に
どんなオブジェクトが渡されてくるかを調べる
そういうオブジェクトを自力で用意してonEditEventに渡す関数を作成する
その関数をデバッグモードで起動
とかするんじゃないのかな
ググってみればやっている人いるかも
0303デフォルトの名無しさん
垢版 |
2016/01/31(日) 12:12:27.01ID:Y0j0ifuu
とりあえず、「Hello,World」から始めようと思ってやってみたんですが、

「Cannot call Browser.msgBox() from this context;
have you tried Logger.log() instead? (line 1, file "helloworld")」

とエラーがでていきなり動きません。
エラー内容で検索してみたのですが、
同様のケースは見つからず困っています。
原因は何なのでしょう?

ソースは以下の通りです。↓

function myFunction() {
Browser.msgBox("Hello World!");
}
0304デフォルトの名無しさん
垢版 |
2016/01/31(日) 12:40:01.06ID:35YTNVlr
スプレッドシートで やったら普通に動いたよ
this contextとある様にどんな状況でスクリプトを実行しているかが問題だと思う
0305デフォルトの名無しさん
垢版 |
2016/01/31(日) 19:52:12.09ID:iHBYUhz2
>>303
そもそも、Browser.msgBoxってスプレッドシートでしか使えませんよ。

なので、普通は例えば

var ui = SpreadsheetApp.getUi();
ui.alert(“helllo world”);

です。uiのgetUiの部分をDocumentApp.getUiにすればドキュメントでも
同じように使えます。Browser.msgBoxは現在は非推奨ですよ。
0307デフォルトの名無しさん
垢版 |
2016/02/01(月) 17:37:08.92ID:zFO6PW8k
>>304 >>305 >>306
「Hello World」はスプレッドシート経由じゃないと実行できないんですね。
私はGoogleDriveからスクリプトを新規作成して実行していました。
だからエラーがでて動かなかったんですね。

ためしにスプレッドシート経由で動かしてみたところ、
無事、「Hello World」が表示されました。

教えていただいて、ありがとうございました。助かりました。
0308デフォルトの名無しさん
垢版 |
2016/02/29(月) 07:51:01.35ID:tfVkN3NW
インスタのAPIで色々しようと思ったけどoauth2が全然分かんないや
gasでインスタapi扱い方書いてるサイトとかないだろうか?
0309デフォルトの名無しさん
垢版 |
2016/03/16(水) 16:45:59.48ID:AoxyQu12
現在、Google DriveをAPI経由で使うための勉強をしています。

[root]
 +[個人的なフォルダ]
 +[公開している共有しているフォルダ]

このような構成で、API経由で両フォルダ上にファイルの読み書きを想定しています。
ひの際に使うアクセストークンが知られてしまうと
だれでも両フォルダのの中身をいじることができるようになってしまいます。

そこで質問なのですが、「公開している共有しているフォルダ」の操作だけを
許可するトークンは発行できるのでしょうか。

ひとつユーザを作って「公開している共有しているフォルダ」を共有し
そのユーザでトークンを発行すれば期待どおりになるということはわかったのですが、
お金を削減したいので、ひとつの特権管理者ユーザだけで実現したいのです。

お詳しい方いらっしゃいましたら、どうか教えて下さい。
0310デフォルトの名無しさん
垢版 |
2016/03/18(金) 22:40:22.81ID:Q3hcmZkc
>>309
googleアカウントでログインさせろ
0311デフォルトの名無しさん
垢版 |
2016/03/21(月) 20:12:50.73ID:49NnzOUU
>>309
アクセストークン使わずにコーディングする。ヒントhScript.getOauthTokenだったかな。

PDF作成時にも使う手ですよ。
0313デフォルトの名無しさん
垢版 |
2016/04/10(日) 21:58:42.74ID:q/cDt/0h
GASのWebアプリケーションで質問です。

doGetで受けたパラメーターは
e.parameter.xxxで取得できますが
これをクライアントに渡す方法で悩んでます。

今はdoGetで受け取ったらUsetCacheに預けて
html(template)側で<? ?>を使って取り出しています。

初心者ながら、これがスマートじゃない気がして、
違和感を拭いきれないのです。

スマートな方法を教えてください。
0314デフォルトの名無しさん
垢版 |
2016/05/01(日) 16:22:45.99ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
17
0315デフォルトの名無しさん
垢版 |
2016/05/02(月) 15:16:04.56ID:aR8AOrvI
YahooAPIのスレは無い?
0316デフォルトの名無しさん
垢版 |
2016/05/27(金) 20:19:53.53ID:wEIQ/dS/
Google Apps Scriptって重くね?
かなり処理量すくないスクリプト書いたんだけどモッサリしてる。
起動が遅いだけなのかなぁ。
0318デフォルトの名無しさん
垢版 |
2016/05/28(土) 11:46:40.70ID:YkPoIoOS
コード更新後最初にアクセスしたときにプロセスが立ち上がる感じで
何度かアクセスするといくつかのプロセスが立ち上がるので
最初の数回は全部遅い感じがするが
しばらくすると速くなってくる
ただしプロセスのキャッシュ有効期限が過ぎるとまた最初からなので遅くなったり
0319デフォルトの名無しさん
垢版 |
2016/06/13(月) 11:51:06.87ID:0qOmRg0P
質問です。
スプレッドシート内にいくつかの図形を配置してるんですけど
セルの値が編集された時、一個の図形(地図画像)を
更新(画像削除→画像再配置)したいです。

今は画像を削除→画像作成script と手作業でしています。
この作業をscripで出来ますでしょうか?
0320デフォルトの名無しさん
垢版 |
2016/06/13(月) 15:00:26.33ID:zgrawcOE
削除しなくても更新される
0322デフォルトの名無しさん
垢版 |
2016/06/17(金) 23:25:49.12ID:ZmH+ZAWf
>>321
gasはあくまでサーバーサイドなので
クライアントサイドは普通にjs使えるのでは?
0324デフォルトの名無しさん
垢版 |
2016/07/03(日) 05:32:47.99ID:AkQnhWCl
>>321
元々サイトっていうより、Wikiなので。あのサービスは。

なので埋め込みのApps Scriptを使えって事です。

>>322
それはApps scriptのHTML Serviceの中の話です。
0327326
垢版 |
2016/07/28(木) 10:11:10.32ID:LxRDdK5b
自己解決しました、やりたかったのは同じソースでも実行するfile idによって動作を変えたかった、なんですが、
ローカルで開発してgapps pushするときにうまく切り替えるようにしました、、、
0328デフォルトの名無しさん
垢版 |
2016/07/28(木) 19:04:49.94ID:O8Vfrh0P
FileIDかどうかは知らんけどデプロイして変わったのを知りたいなら
AppVersionみたいなのは実行中に取れた気がする
(管理画面に表示されるやつと同じもの)
0329デフォルトの名無しさん
垢版 |
2016/08/05(金) 07:48:44.14ID:OmPlANC2
質問するスレ間違えてたみたいなのでここで改めて質問させてください

http://hesonogoma.com/stocks/japan-all-stock-prices.html
この株価データサイトのデータを定期的にスプレッドシートに表示させたくて
ここ数ヶ月悩んでます

1
サイト下部にある Copy to Clipboad からコピーしてシートに貼り付ける
というスクリプトは可能ですか?出来るならどうすればいいのでしょうか?

2
CSVファイルをダウンロード
本来はこのやり方を調べていました。が、flashで表示されているのでurlが判らず
お手上げ状態に・・

1が無理なら2を何とかしたいと思っております
0330デフォルトの名無しさん
垢版 |
2016/08/05(金) 12:12:46.89ID:LJe/qM3f
課金が必要
0332329
垢版 |
2016/08/06(土) 08:04:08.54ID:2dv1pXxg
>>331
レス有難うございます。PrintViewでどうにかできそうですか!

でもどうすればいいか解らないレベルなので
とりあえず図書館でjavascriptの本を借りてきました

「はじめに」
読んでるうちに寝てもうたw
0333329
垢版 |
2016/08/06(土) 08:13:37.42ID:2dv1pXxg
ちなみに>329の2を試してみたときのコードが

function getCsvSample() {
var folderId = '***********';
var destfolder = DriveApp.getFolderById(folderId);
var date = "2016-08-04";
var response = UrlFetchApp.fetch("http://hesonogoma.com/stocks/media/swf/copy_csv_xls_pdf.swf";);
destfolder.createFile(date + '.csv', response.getContentText('Shift_JIS'));
}

です。拾ってきたコードをいじって実行したら
謎の文字化け集団が襲ってきました (ここで心折れる)
0334デフォルトの名無しさん
垢版 |
2016/08/10(水) 23:27:34.29ID:U9v+Tybh
GASでスクレイピングしたいんですが、UrlFetchAppで取得したHTML(XMLじゃない)をDOM化するのってできますでしょうか?
正規表現で必要なところを取ってくるのは心が折れそうなので、セレクタで処理したいです。
0335デフォルトの名無しさん
垢版 |
2016/08/11(木) 11:55:28.49ID:v2n9djjr
OK
0337329
垢版 |
2016/08/13(土) 07:36:05.54ID:VdLmMpzK
>>336
レスありがとうございます
試してみたんですが、うまく変換できませんでした
やっぱりurlが違うのかな、、

このスレの質問、回答がほとんど理解できてない程度ので
もう少し基本からじっくり勉強してみます!
>>329の1だけ
引き続き質問を残させてください
0338デフォルトの名無しさん
垢版 |
2016/08/13(土) 17:13:54.48ID:byPJKfY1
GAS関係なくね?
0340デフォルトの名無しさん
垢版 |
2016/08/24(水) 01:12:18.88ID:dEIn8nhr
GASでgoogleAPIを叩いてgmailの下書きを作成するものを作ったのですが、
これを毎日作成(雛形をコピー)するスプレッドシードで使いたいと思っています。
スプレッドシートに書いてコピーすると、gAPIの紐付けプロジェクトが変わっているので設定しなおさなければ使えず、困っています。

スプレッドシートをコピーして、シート上のボタンを押したらすぐに下書きを作れる状態を作りたいのですが、どのような方法がありますか?
0341デフォルトの名無しさん
垢版 |
2016/08/24(水) 09:46:43.51ID:nL2g9QDB
>>340
GASのGmailAppでダメ?
ttp://qiita.com/minanami/items/87641f09192be1b5010b
個人的にはフォームから入力させた方がGUI的にいいと思うけど
スプレッドシートに保存したいならその後GASで自動追加させとけばいいし
0342デフォルトの名無しさん
垢版 |
2016/08/24(水) 15:58:08.87ID:Ku8YOB4B
>>340
ライブラリ化する
0344デフォルトの名無しさん
垢版 |
2016/08/25(木) 23:18:14.53ID:5XLt8Aa8
>>329,>>343
よっしゃ、俺がやってやらぁ!って思って意気込んでサイトみたら普通にJSONで取れた
ttp://hesonogoma.com/stocks/data/japan-all-stock-prices.json
0345デフォルトの名無しさん
垢版 |
2016/08/27(土) 08:39:19.05ID:m8PsOLXX
>>344
おお、、、これで目的は果たせそうです
皆さん長々とありがとうございました!勉強も少しずつ続けます
0346334
垢版 |
2016/08/27(土) 11:42:11.09ID:RucMLpGl
>>339
ありがとうございます。ですが、そのライブラリだと正規表現を使うのと全く変わらないです。
いっそのこと自作しようと思います。
ありがとうございました。
0347デフォルトの名無しさん
垢版 |
2016/09/28(水) 22:05:17.24ID:eXjFddOW
ここ最近CalendarAppのアクセス頻度でエラーが出るようになった

Googleはアナウンスなしで仕様変更してくるのやめてほしい
0348デフォルトの名無しさん
垢版 |
2016/10/19(水) 12:06:30.27ID:r6QG4f4p
G Suite ω
0352デフォルトの名無しさん
垢版 |
2016/12/13(火) 18:03:00.36ID:x2U1jQSF
google sitesとスプレッドシートとの連携について教えて下さい。

google sitesで作成したページ(AAAについての確認とします)上に個人名でいくつかの
CK BOXがあります。

----------------------------
<AAAについての確認>
□Aさん
□Bくん
□Cちゃん
□Dちゃん
□Eさん

送信
----------------------------

いくつかのCK BOXにCKが入っているとして”送信”を押したら次の様にスプレッドシートを操作する方法を
教えて下さい。

1. googleドライブ上の指定されたスプレッドシート内に<AAAについての確認>というシートが作成される。
2. 1で作成されたシートにAさんからEさんまでのCK BOX STATUSを記録する
3. 送信した日付も記録する

目的としては、家族内情報共有ホームページを作成したいです。
Googleサイトが無償でホームページが作成できるとのことでGoogleサイトでのこの内容の動きが
出来るか教えていただきたいです。
0353デフォルトの名無しさん
垢版 |
2016/12/13(火) 21:30:54.00ID:mRmuTzdU
フォームの名前を<AAAについての確認>とすればいい。
0355デフォルトの名無しさん
垢版 |
2016/12/17(土) 01:48:09.89ID:3C8QRPXl
GASであるサイトをスクレイピングしたいけど、ログインしないと情報が取得できない。
クッキーをセットしたりすればログインしてアクセスできるけど、それってセキュリティ的に危険かな?
0356デフォルトの名無しさん
垢版 |
2016/12/19(月) 23:51:02.67ID:Hch485Lz
GASでスプレッドシートをいじろうと思ってるのですか、まず有効なスプレッドシートを選択してくださいと。と表示されてできません。なにがダメなのでしょうか。下記のようにやっています。

var ss = SpreadsheetApp.OpenById("");
var sheet = ss.getSheetByName("");

SpreadsheetApp.setActiveSheet(sheet);
0357デフォルトの名無しさん
垢版 |
2016/12/20(火) 12:59:03.44ID:lAXr92yw
IDは?
0358デフォルトの名無しさん
垢版 |
2016/12/20(火) 19:57:35.71ID:ktde9hau
oops
0359デフォルトの名無しさん
垢版 |
2016/12/21(水) 00:25:00.04ID:nYEPRmnr
ID、シート名ともにあってます…

スプレッドシートからスクリプトエディタを使わないとできないのでしょうか?今は別にスクリプトファイルを作ってやってます
0361デフォルトの名無しさん
垢版 |
2016/12/22(木) 18:37:45.76ID:0Tg51mYJ
>>356
3行目は開いてるスプレッドシートに対してしか効かないとか。
試してないけど。

別に開かずとも変数sheetは取れてるだろうから、3行目は書かなくてもその後のやりたいことはできるのでは?
0364デフォルトの名無しさん
垢版 |
2016/12/27(火) 01:28:56.39ID:tIGH6DEG
みなさんありがとうございました!

Var SS = SpreadsheetApp.openById("");
Var sheet = SS.getSheetByName("");

SpreadsheetApp.getActivesheet ();

でエラー出ずにやることができました
0365デフォルトの名無しさん
垢版 |
2016/12/27(火) 14:37:37.38ID:6KX94UiV
sheetが使われてない
0366デフォルトの名無しさん
垢版 |
2017/01/08(日) 20:32:30.74ID:BBb65MXo
GASでローカルのtxt、たとえばc:\\test.txtなんかをスプレッドシートに展開したいのだけれど
csvを展開するスクリプト(https://github.com/prog-mitsu/importCsv
をいじくりまわしてもどうもうまくいかない

このスクリプトだと、フォームが表示されるのだけれど
フォームの表示なしで、固定のテキストファイル(たとえばc:\\test.txt)を展開することって
GASではむりなんかいな?
0368366
垢版 |
2017/01/09(月) 07:41:00.04ID:kW/T2j6A
>>367
早速の返信ありがとうございます
いろいろ調べましたが
http://tokidoki-web.com/2013/08/file-api%E3%81%A7%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E3%82%84%E3%82%93%E3%82%88/
にあるとおり

>セキュリティの問題上でパスを「C:\file.txt」や「../text/file.txt」の様に指定してファイルを書き直す事はできません。

との状況です
0369デフォルトの名無しさん
垢版 |
2017/01/09(月) 10:02:02.53ID:/7U8UXhW
ローカルのものをGoogleDriveにupしたあと
それをGASで開くんだよ
0370366
垢版 |
2017/01/12(木) 21:41:52.77ID:35gbmkUr
>>369
その、「ローカルのものをGoogleDriveにup」をフォームなどの表示なしに自動化したいのです
0372366
垢版 |
2017/01/13(金) 23:07:28.92ID:lbjer3ZB
>>371
ありがとうできました。
0373デフォルトの名無しさん
垢版 |
2017/02/02(木) 07:52:54.77ID:hDfY8PDB
半年ほど前にお世話になった者です

スプレッドシートでimportdata関数を使っていたんですが
Loading......が頻発するので、やはりGASで対処したいのです
データ取得までは出来てると思うのですが、シートに書き込む段階が全くおかしいようで・・


function fetchData(){
var response = UrlFetchApp.fetch("http://hesonogoma.com/stocks/data/japan-all-stock-prices";);
var json = response.getContentText();
var kakaku = JSON.parse(json);

var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1);
range.offset(0, 0, 6000, 26).clear();

for(var i=0; i<kakaku.length; i++) {
var event = kakaku[i];

range.offset(i+1,0).setValue(event);
}
}

正解か、参考になるサイトをご教授いただきたいのです
色んなサイトのコード切り貼りしすぎて、頭がおかしくなってきたw
0374デフォルトの名無しさん
垢版 |
2017/02/02(木) 12:56:10.24ID:Y5kXFMjA
アクセス権は?
0375373
垢版 |
2017/02/03(金) 06:23:34.32ID:HRggU1Ve
>>374
仕組みがよくわからないんですが、
ログにはデータ表示されるのでアクセスは出来ているはず・・・

・・もしかしてアクセス権というのは違法性の問題とかですか!?
すみません、だったら質問とりやめますが
0376デフォルトの名無しさん
垢版 |
2017/02/03(金) 08:05:00.39ID:HRggU1Ve
色々やってみたら一応なんとかなりました
1年ちょいのモヤモヤが一気に解消して、いま涙目になってますウォォ

ありがとうございました!
0378デフォルトの名無しさん
垢版 |
2017/02/15(水) 00:43:00.46ID:8OzNcjl5
エラーのメールいっぱいくるからトリガー止めようと思っても保存押したらサーバーエラーになっちゃう
0379デフォルトの名無しさん
垢版 |
2017/02/15(水) 13:37:01.14ID:8OzNcjl5
"サービスで1日に使用しているコンピュータ時間が長すぎます”っていうエラー出るだけど
どういうエラーか分かりますか?
なにもいじってないのに昨晩から急に出るようになった
0383379
垢版 |
2017/02/19(日) 12:34:42.66ID:I5IVz31O
1日止めて何も変えずトリガー元に戻しましたが、今のところ問題無し
数は減らしましたがペースは変えず
0384デフォルトの名無しさん
垢版 |
2017/02/27(月) 17:20:09.61ID:D6mIqUvN
Spreadsheetで行の非表示/表示はsheet.hideRow(rowIndex)/sheet.unhideRow(rowIndex)ですが、
ある行が非表示であるかどうかはどのように確認できますか?
0385デフォルトの名無しさん
垢版 |
2017/03/02(木) 18:37:21.00ID:ZV5SMkF2
visible
0386デフォルトの名無しさん
垢版 |
2017/03/09(木) 00:32:07.05ID:JhFIW3VD
>>385
ありがとうございます。それってどのクラスから生えてますか?
一応、下のようになってみましたができませんでした。
sheet.getRange(1, 1).visible
0389デフォルトの名無しさん
垢版 |
2017/03/11(土) 14:16:44.62ID:QRqRtZxP
>>388
ありがとうございます。確かにそのページによるとサポートされてなさそうですね。
stackoverflowでいくつかの同様な質問を見つけましたが、できない的なことが書かれてました。
visibleの件ももう少し調べてみて、できそうになかったら諦めます。
0390デフォルトの名無しさん
垢版 |
2017/03/26(日) 23:38:49.69ID:bKMbQXbX
var triggerUniqueId = ScriptApp.newTrigger("doPost2")
.timeBased()
.after(100)
.create()
.getUniqueId();

これを実行すると以下の3パターンの動作になるのだがなんとかならないかな?
・すぐにdoPost2に飛んでくる
・数秒〜数十秒後にdoPost2に飛んでくる
・どんだけ待とうがdoPost2に飛んでこない(何分か待ってれば飛んでくるのか?)

ちなみに飛んでこなかった場合は全てのトリガを削除してからやり直してる。
0391390
垢版 |
2017/03/27(月) 00:25:00.99ID:0WjH3gBI
微妙に勘違いされそうな書き方だったので追記

doPost2に飛んできたときはその中でトリガを削除しているので
「飛んでこなかった場合は全てのトリガを削除してからやり直してる。」ということです。
0392デフォルトの名無しさん
垢版 |
2017/03/27(月) 01:50:47.06ID:R2ENwT8H
100ms後にdoPost2に飛ばしたいってこと?
最終的になにがしたいかわからん
そのidでなにすんの?
0394デフォルトの名無しさん
垢版 |
2017/03/27(月) 08:47:26.49ID:VebtMPKj
目先の目的は「指定した時間後にdoPost2を実行したい」です。
100msが1秒になるにはまだ許容範囲ですが、
さすがに数十秒後やかなり待っても飛んでこないのはなにか設定がおかしいのかなと。
0396デフォルトの名無しさん
垢版 |
2017/03/27(月) 23:05:58.94ID:8SS48vh4
大雑把に以下のような流れになるのでsleepでは無理っす。
1, PayPalからPOSTがくる
2, PayPalにHTTP 200を返す
3, PayPalにPOSTを投げる
https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/

function doPost(e) {
 トリガ仕掛ける
 HTTP 200を返す
}
function doPost2() {
 POSTを投げる
}

いろいろ試したけど60秒とか大きな値ならそれっぽいタイミングでトリガがかかるみたい。
短すぎる設定時間はダメなのかなぁ。
0397デフォルトの名無しさん
垢版 |
2017/03/28(火) 08:44:43.71ID:o5IlqyIy
トリガの指定って分単位だった気がする
内部的にcronだから
○時ちょうどにトリガー仕掛けたくて試したけど無理で、59分にしかけて00秒まで待つって実装にしたことがある
非同期処理ができないから難しいかも
秒数は一定じゃないから、1分後にトリガー設定しても最大1分59秒後になることもある
にしても面倒な仕様だなPaypal
0398デフォルトの名無しさん
垢版 |
2017/05/05(金) 06:31:43.18ID:SiZHVQw5
VBAのCall ステートメントは、Google Apps Scriptの場合どう記述すればいいですか?
0400デフォルトの名無しさん
垢版 |
2017/05/14(日) 12:32:35.84ID:jKxGUXHj
アクティブシートのカーソルがあるセル(アクティブセル)の行番号を、別のシート(setei)のB1へコピーしたいのですが、
うまく行きません。
5行目のvar copyValue〜の値をmsgBoxで出力すると、希望通りの値が出ているので、そこまでは合っていると思うのでが、
6行目で取得した行番号を、別のシートのB1に入れる所で躓いています。解決方法を教えて頂けないでしょうか?

function myFunction() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet_copyFrom = sheet.getActiveSheet();
 var sheet_copyTo = sheet.getSheetByName('setei');
 var copyValue = sheet_copyFrom.getActiveCell().getRow();
 sheet_copyTo.getRange('B1').setValues(copyValue);
}
0404デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:07:56.13ID:UO8/oZl+
質問です。

スプレッドシートのシートを並び替えることはできますか?
セル範囲のデータならSORTでできることは知っているのですが、シートには使えませんよね。

日付がシート名になってて、それを昇順に並び替えしたいのです。
よろしくお願いします。
0406デフォルトの名無しさん
垢版 |
2017/05/22(月) 16:43:39.47ID:j0GB+9U0
IDかわりましたけど404です。
>>405
めんどくさい方法ですけど、一応自分で作ってはみました。
これよりいい方法があるのか、改めてお知恵をお貸しください。

var ss = SpreadsheetApp.openById(file.getId());
var sheets = ss.getSheets();
// シート名(yyyyMMdd形式)で昇順ソート
sheets.sort(function(a, b){
var aa = Number(a.getSheetName()) || a.getSheetName();
var bb = Number(b.getSheetName()) || b.getSheetName();
if (aa < bb) return -1;
if (aa > bb) return 1;
return 0;
});
// 別スプレッドシートにコピー
for (var n in sheets)
{
var sheet = sheets[n];
var sheetName = sheet.getSheetName();
sheet.copyTo(sortedSs).setName(sheetName);
}

同じスプレッドシートでの並べ替えを諦めて、別スプレッドシートにソート済みをコピーしたってだけのものです。
0407デフォルトの名無しさん
垢版 |
2017/05/22(月) 22:49:33.07ID:Bx+b+qt8
1.シート数を取得
2.全シート名を配列へ
3.配列をソート array.sort()
4.シートを移動
0408デフォルトの名無しさん
垢版 |
2017/05/23(火) 20:48:03.04ID:RApg7j5+
>>407
4. シートを移動

これができなくて悩んでたんですが
SpreadsheetオブジェクトにinsertSheetメソッドやmoveActiveSheetメソッドがありますね。
何とか実装できそうです。
ありがとうございました。
0409デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:37:10.09ID:0OdP20aK
0410デフォルトの名無しさん
垢版 |
2017/06/25(日) 21:20:03.77ID:xjvWfy2S
getValuesで取得した二次配列の、あるインデックス番号Ary[n][n]から、セル番号を取得するにはどうすれば良いでしょうか?
又、それはAPIを使わず、javaの配列処理の中で完結できるものなのでしょうか?
0412デフォルトの名無しさん
垢版 |
2017/06/26(月) 11:16:36.54ID:H+izVTcm
modは義務教育で教えるべきだな
0413デフォルトの名無しさん
垢版 |
2017/06/26(月) 15:45:17.47ID:Zgx9U3+p
gasなのかわからないですが、間違いならすみません。
フォームで@郵便番号を入れたら住所の一部を表記させたいのですが、できるのでしょうか?
A特定の数字をいれたら、外部からその数字に該当するデータを引っ張れるでしょうか?(社員コードいれなら社員名がでるイメージです)
誠にすみませんが、可能ならばご教授
おねがいします。
gasはさわったことないので、できそうならば、やってみたいとおもいます。
0414デフォルトの名無しさん
垢版 |
2017/06/26(月) 20:44:30.70ID:iMKCKa0h
>>413
1.できます
2.できます
3.ajax
0415デフォルトの名無しさん
垢版 |
2017/06/26(月) 21:07:30.37ID:YNcumjCY
>>414
おしえてくださいばっかりでもうしわけありませんが、本当に素人でして。
コードやら参考のURLでもありましたらおねがいします。
0417デフォルトの名無しさん
垢版 |
2017/07/05(水) 17:50:45.17ID:aOT9LPA2
/**
* @return ライブラリ名
*/
とやっているのに返り値のメソッド補完が効きません…
何か間違っているでしょうか…
0419デフォルトの名無しさん
垢版 |
2017/07/05(水) 19:25:23.18ID:aOT9LPA2
>>418
コメント付けると補完が効くようになると聞きました
0422デフォルトの名無しさん
垢版 |
2017/07/12(水) 23:56:43.84ID:zDi+fEh9
外部サイトで申し訳ないのですが、GASについて下記のサイトのチュートリアルを試していたのですが
ttps://tonari-it.com/gas-web-appli-spreadsheet-append/
真似をしてみても、エラー出てしまいます。

getActiveSheet を呼び出す権限がありません(行 2、ファイル「test2」、プロジェクト「HTMLページ表示」)

自分のコードが間違えたのかと、コードをコピペしたり、スクリプト認証を再度許可を出すために
現在とは別にファイルを作り直したりしたのですが、同じエラーが出てしまいます。
このエラーを回避するにはどうすれば良いでしょうか?
0424422
垢版 |
2017/07/13(木) 13:30:04.56ID:7vUNc/rI
すみません自己解決しました。
原因はスクリプトにプロジェクトのトリガーを設定していなかったことが原因だった様です。

公開済みのHTMLなのでアクセスすれば良いだけでなのに、なんでや!と思っていたのですが、
googleのwebアプリの場合、公開時にアサインされるHTMLへのリンクは、実はHTMLへのリンクではなく、
リンク > Ajax > .gs > html という流れらしく(たぶん)
3番目の.gsにトリガーが設定されてないとダメという感じの様です。なので.gsのトリガー設定した所動きました。

[設定したトリガー]
実行:doGet
イベント:スプレッドシートから・起動時に設定

このトリガー自体適当に設定したので、spreadsheetに紐付いた(コンテナバウンド)webアプリがこのトリガーで本当に良いのか?
.gsがスタンドアローンだったらどうするのか?などは自分の知識ではまだ不明です。
割と有名(みんなが引っかかる)ワナらしく、「GAS 実行する権限がありません」でググると色々出てきます。
0426デフォルトの名無しさん
垢版 |
2017/09/26(火) 05:38:02.61ID:uiCOOs0C
ぐぐってきたけど、ここそんなに人気ないの?
0428デフォルトの名無しさん
垢版 |
2017/09/26(火) 19:33:58.52ID:vmZLMK5C
すみませんが質問させてください。

現在、google appsのみで簡易ウェブアプリの制作を試みています。

構成は
htmlservice+gas+spredseet(DB)
です。

各種申請をweb化するのですが、アクセスしたユーザーのgmailアドレスもDBに格納します。
session.getactiveuser().getemailを利用するため、スクリプトの実行者は「アプリケーションアクセスしているユーザー」にしています。
そうすると、spreadsheetも全員に公開する必要がありますが、spreadsheetの中身は個人情報を少し含むため見られたくありません。

なにかいい方法はありますでしょうか、、、fusiontablesなどであればできるのでしょうか?
0430デフォルトの名無しさん
垢版 |
2017/09/27(水) 13:03:25.12ID:Is6BRq5M
>>429
ご助言ありがとうございます。
propaties serviceについて調べた見ましたが、ユーザープロパティとして保存した場合、他のユーザーからは一切アクセスできないものと思いました。

一部のユーザー(システム管理を行う数名)に対しては、データの参照ができるようにしたいと思ったおります(申請されたデータを承認するようなワークフローアプリを検討しているため。後出して申し訳ありません)
0431デフォルトの名無しさん
垢版 |
2017/09/27(水) 14:45:10.73ID:/heCrwKp
サイズが十分小さければスクリプトプロパティかな。
たしか500KBくらいまで。

あるいは、スプレッドシートにスクリプトを付属させるんじゃなく、
独立プロジェクトにして、openByIdとかopenByUrlとかは?
0432デフォルトの名無しさん
垢版 |
2017/09/27(水) 15:36:25.01ID:Is6BRq5M
>>431
ご助言ありがとうございます。
プロパティについては、思いの外データの種類が増えそうなため難しそうです。

スクリプトをスタンドアロンにして、openbyidがいいですかね、万一idがバレてしまった時のことが不安ですが、そういったことは起こらないと思っていい感じでしょうか。
0434デフォルトの名無しさん
垢版 |
2017/09/29(金) 01:18:28.86ID:tHWOJPZ9
for (var i = 1; i <= ss.getLastRow() ; i++){
ss.getRange(x,y).setFormula('=IMPORTHTML("https://www.yahoo.co.jp";,"table"1+i,');
}

for分の中で関数の最後の部分を1ずつ足していきたいのですが、セルに出力された際は「i」の部分は数字としては見てくれません。
1つずつ足していく方法はありますでしょうか。
0435デフォルトの名無しさん
垢版 |
2017/09/29(金) 08:18:30.31ID:qX48jByc
>>433
ありがとうございます。
ライブラリ化するということでしょうか。
getEmailする部分を別アプリ(アプリにアクセスしているユーザー実行)にして、spreadsheet操作をするアプリはオーナーとして実行する感じでしょうか。
調べてみます。
0436デフォルトの名無しさん
垢版 |
2017/09/29(金) 11:06:26.65ID:/1pN5XFr
>>432
>そういったことは起こらないと思っていい感じでしょうか

マーフィーの法則というのがあってだな
そういう起こって欲しくないことは起こるんだ
0437434
垢版 |
2017/09/29(金) 11:38:46.26ID:tHWOJPZ9
自己解決しました。
ss.getRange(x,y).setFormula('=IMPORTHTML("yahoo.co.jp","table",1+'+i+')');
0438デフォルトの名無しさん
垢版 |
2017/10/27(金) 20:03:28.12ID:CxLsHkIL
googleドライブにアップしたエクセルxlsを自動でspreadsheetに変換するコードはありますか
0439デフォルトの名無しさん
垢版 |
2017/10/28(土) 10:08:42.77ID:w8au0uVc
すべてのシートで文字の一括置換をしたいのだけど、セル毎に処理するしかないのかな?
0440デフォルトの名無しさん
垢版 |
2017/10/28(土) 11:18:38.62ID:YrbVG7kU
>>438
pythonでダウソするやつはある
0441438
垢版 |
2017/10/28(土) 19:55:11.76ID:aeUdpVUN
>>440
検索してなんとなくできそうなのでやってみます
ありがとうございました
0442デフォルトの名無しさん
垢版 |
2017/11/12(日) 02:54:44.20ID:StX7DGK4
GAS単体でajaxのようなwebページをクローリングすることは可能ですか?
やっぱり外部を通さないと無理でしょうか
0444デフォルトの名無しさん
垢版 |
2017/11/13(月) 13:04:40.18ID:8/cIJ70S
スプレッドシートの制御をAndroidから行う方法をご教示頂けませんでしょうか。
内容としては複数列のソートを行いたいのです。
現状は列指定でソートをかけているのですが、列数が多く余分な時間がかかります。
PCからは実行できているのですが、同様の事がAndroid上から行えたらと思います。
実行用のトリガーがAndroidで使用できずに困っております。
現状トリガーは図形に対してスクリプト実行させていますが、タップしてもAndroidでは削除しか出てきません。
0447デフォルトの名無しさん
垢版 |
2018/01/03(水) 23:47:48.36ID:cEXvj/Pp
サーバー側でjqueryって使えますか?
WebスクレイピングのHTMLパーサとしてjqueryを使いたいのですが…
0448デフォルトの名無しさん
垢版 |
2018/01/04(木) 12:56:13.15ID:o7CttU7P
node.jsと思ったがGASか
0449デフォルトの名無しさん
垢版 |
2018/01/05(金) 01:26:13.05ID:GBYhvW0R
>>447
npmでjQueryをinstall
webpackでbundle
node-google-apps-scriptでアップロード
って感じでいけないかな?
試してないのでできるか分からないけど
0451デフォルトの名無しさん
垢版 |
2018/01/06(土) 11:51:13.98ID:HbY4/bGY
どっかよそのAPI使うとか
0452デフォルトの名無しさん
垢版 |
2018/01/07(日) 11:57:20.99ID:ez3NxZhX
Googleドライブにあるスプレッドシートを
JSONファイルを返すウェブアプリケーションとして使ってるんだが
JSONデータがブラウザにキャッシュされなくて困っている

cache-control:no-cache
pragma:no-cache
expires:Mon, 01 Jan 1990 00:00:00 GMT

というhttpヘッダを返してきてキャッシュさせてくれないんだが、
このヘッダを書き換える方法は無いか?

一ヵ月に1度、2度くらいしか更新されないデータだが、毎日頻繁に参照されるもので
データが1.4MBデカい為、変更されたときだけ読み込むようにヘッダを書き換えたい
0454デフォルトの名無しさん
垢版 |
2018/01/13(土) 02:09:46.21ID:Tg/TmElT
>>447
こないだ同じような用途でjsdomとjquery使ったわ。

たしかこんなかんじ
var JSDOM = require('jsdom').JSDOM;
JSDOM.fromUrl('https://example.com/').then(function(dom) {
var window = dom.window;
var jQuery = $ = require('jquery')(window);
// ここから$('ul#hoge > li.huga')とか普通に使えるはず
});
0457デフォルトの名無しさん
垢版 |
2018/01/29(月) 23:20:08.61ID:5eR4vC6L
constはランタイムエラー
letは通る
だったような記憶
0458デフォルトの名無しさん
垢版 |
2018/02/06(火) 22:16:05.06ID:/gHduiD+
addMenuでスプレッドシートに追加する独自メニューを条件によって選択不可にすることはできますか?
通常のメニューと同じようにグレーアウトして選択できないようにしたいです。
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の普及具合ってどう?
0599デフォルトの名無しさん
垢版 |
2019/05/13(月) 07:51:29.08ID:UqvxTptL
知らんがな
まぁjavascriptと同じ感じだからGAS覚えとけば
使う機会あるか知らんが
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で実行するときってその実行コマンドをショートカットにして
デスクトップにおけますん?
0790デフォルトの名無しさん
垢版 |
2021/06/14(月) 17:48:55.22ID:WNlBtQy0
>>787
TaskerとTermux用Taskerプラグイン買えばショートカットとか色々なトリガーでコマンド実行できる
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と比べてダメ過ぎだな
0801デフォルトの名無しさん
垢版 |
2021/07/29(木) 06:32:21.24ID:RJZsh/tv
スプレッドシートのグラフもひどいよ。
setOption(‘vAxes.1.title’,’hoge’)とかも
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を使う
かなぁ
0806デフォルトの名無しさん
垢版 |
2021/08/10(火) 11:13:59.22ID:9wi/dlAk
GAS には、ユーザー認証機能があるの?

認証は、Firebase Authentication じゃないの?
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だけ、背景色だけ、などはいくつか見つけられたのですが、組み合わせ方が分かりません…。
0825デフォルトの名無しさん
垢版 |
2022/02/21(月) 21:47:26.46ID:UKJTHoUK
https://script.google.com/

このページって何処からたどり着くんですか?
googleドライブとかから新規にスクリプトを作成するのは出来るんですけど
何処にも上記のリンクが無いです
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, ...]
]
という二次元があったとき、
○○が○○であることを確認する方法ってある?

みたいな
0877デフォルトの名無しさん
垢版 |
2023/01/21(土) 04:21:13.49ID:a0kfmYv3
日本語というかこういうのはちゃんと説明できないからコード書けないんでは
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を超えると表示できなくなるよ。

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