X



【MACRO】Google Apps Script 質問スレ【DRIVE】

0001デフォルトの名無しさん
垢版 |
2014/06/29(日) 11:07:03.38ID:5HmND7Qc
Google Apps Script でのプログラミング等に関する質問スレです
Excel や Access の VBA に不満のあるあなた
web アプリだけでなくクライアントアプリからも利用したいあなた
ローカルなデータベースやファイルだとバックアップに不安のあるあなた

ム板に無かったので立ててみます

Google Apps Script
ttps://developers.google.com/apps-script/
Google Drive API
ttps://developers.google.com/drive/
Getting Started with the Google Data Python Library
ttps://developers.google.com/gdata/articles/python_client_lib

■関連スレ
Google Maps API 質問箱
http://peace.2ch.net/test/read.cgi/tech/1131627583/
Microsoft SkyDrive API
http://peace.2ch.net/test/read.cgi/tech/1385604796/
【GoogleAppsScript】猿92【研究せよ!!!】
http://nozomi.2ch.net/test/read.cgi/php/1398600864/
GoogleAPIってどうよ?
http://nozomi.2ch.net/test/read.cgi/php/1018614427/
Google App Engine for Python 6アプ目
http://nozomi.2ch.net/test/read.cgi/php/1358570953/
Google App Engine for java
http://peace.2ch.net/test/read.cgi/tech/1317639323/
GoogleWebToolkit[GWT]について語ろう
http://nozomi.2ch.net/test/read.cgi/php/1147975874/
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が帰ってきて謎...

ぐぐってもサンプルが出てこなくてまいりましたわ
レスを投稿する


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