9
票
数字から始まる変数でエラーになる
JavaScriptを含め、多くのプログラミング言語では変数名の一文字目に数字を使用することはできません(二文字目以降に含めるのは可)。
JavaScriptの場合は
一文字目:半角の英字、アンダースコア、ドル記号
二文字目以降:半角の英数字、アンダースコア、ドル記号
5
票
承認済み
スプレッドシートを使う宣言は、関数化して省略できないものでしょうか?
できます。元が短いので「省略」になるかはともかく、関数にして共通化できます。質問のコードにはいくつか誤りがあるので、これらを直せばよいです。
(追記: なお、変数のスコープに関する誤解があると思いますので、それは「共通の変数を読み書きしたい場合」の項で少し触れました)
関数定義の修正
関数の定義に間違いがあります。
オリジナル:
function spreadsheet(spreadsheet) {...
4
票
承認済み
GASでdiscordのチャンネルに送信したいのだが正しい人に送信されない。
discord 関数の中の
const text = messages[j-11];
で、 channel(discord名前)に対応したメッセージを取得しようとしていると思われますが、実装はそうなっていません。
sheet1, sheet2 とも channel(discord名前) を識別子としたレコードを管理しているので、データ構造もそれに倣えば整理しやすいかと思います。
...
3
票
G suite契約で適切なメール送信可能件数を取得したい
1日2000通/試用期間は500通、というのはG Suiteでのメール送信の一般的な制限です。
Google Apps Scriptにはこれとは別の制限があり、宛先ベースで1日1500です。これを見ただけでは試用期間中の制限は自明ではありませんが、Google Apps無償版の制限と最初のリンクの試用期間中の値を見比べてみると制限が同じですので、Google Apps ...
3
票
メールアドレスを取得したい
「表示」→「マニフェストファイルを表示」で下記を記載していますか?
{
...
"oauthScopes": [
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
getEffectiveUser() を利用するには認可が必要で、スコープを追加する必要があるようです。
getEffectiveUser()...
3
票
承認済み
山手線の電車遅延したらSlackに投稿するスクリプト
記載されたコードをGASのスクリプトエディタに貼り付けて保存すると、エラーメッセージが再現しました。
(ファイル名はSlack.gsですかね。)
実行すると次のようなエラーが表示されます。
こちらは「保存すると」という事でよろしいでしょうか?
上記であっているとして、回答いたします。
GASは関数を実行するので、関数化する事で対応が可能です。
具体的には以下のようにすればよいかと思います。
...
3
票
GASでgoogleカレンダーへデータ移行時エラー「短時間に作成したカレンダーまたはカレンダーの予定の数が多すぎます」
自己解決したので報告します
主な解決ポイントは
・.mapではなくfor文使用
・for文内に Utilities.sleep(1000);を追加する
・1実行500件程度
・最小限のソースにしぼる!
(GASは大量データ処理は弱そうなので、データ加工は別プログラム実行に分け、加工済データを用意)
(スプレッドシート読み込み、書き込みは重いので、なるべく控えるor実行回数最小にする)
(...
3
票
承認済み
GASでパラメータをオブジェクトの���にすると!=がおかしくなる?
コメントをいただき、ありがとうございます。
自己回答の形でまとめさせていただきます。
質問のコードを以下のように改めて実行しました。
function doGet (e) {
var parm = e.parameters;
var foo = {};
foo.v = 'B';
foo.w = 'B';
for (var key in parm) {
foo[key] ...
3
票
承認済み
正規表現でテキストから金額を表す数字部分のみを取得したい
正規表現で取り出したい部分を () で括って グループ化 を行い、後方参照 することでマッチした部分のみを取り出す方法が考えられます。
function myFunction() {
text = "これはテストメールです\nご利用金額:1,234円です\nまた利用してください"
price = text.match(/ご利用金額:([\d,]+)円/)
...
3
票
承認済み
同じ変数を二度使用すると、二回目には変数の値ではなく変数の文字がそのまま表示されてしまう。
(こちら と関連する質問であることを明記しておくと他の方から見て経緯がわかりやすいと思います)
replace() の代わりに replaceAll() を利用することで期待する動作になると思います。
const format = "賞金はBcol円です。Bcol円のプレゼントです。";
console.log("replaceAll: " + format.replaceAll("...
3
票
google apps scriptでカレンダーの「勤務場所」の取得・設定を行いたい
APIがまだないようです。
Goodle Workspace for Developersによるとデベロッパー プレビュー プログラムにて近日公開とのことですので、今は気長に待つしかないですね...
3
票
承認済み
セルに貼り付けたURLのHTMLをログに展開したい
おそらくエラーメッセージが出力されているはずで、そこに原因も書いてあることと思います。質問のコードを見るかぎりですと、以下のような原因が考えられます。
body という変数の定義が見当たらない
そもそも HTML を取得するコードが無い
cheerio は大文字で始まる Cheerio である可能性
(これはライブラリの導入時の設定によります。Apps Script ...
3
票
承認済み
文字列を置換するだけのスクリプトが凄く遅い
getValueやsetValueをループ内で使用するとプロセスコストが高くなってしまいます。
Ref
Benchmark: Reading and Writing Spreadsheet using Google Apps Script
この場合、シンプルな方法としてTextFinderを使用するのはいかがでしょうか。表示されているスクリプトを修正しますと、次のようになります。
function ...
2
票
承認済み
2
票
承認済み
gasのTextInputの挙動について(gmailアドオンの開発)
本事象は現時点では起きていないので、解消されたようです。
https://issuetracker.google.com/issues/80269537
2
票
Google Apps Script MailApp.sendEmailのエラーについて
皆様、お騒がせいたしました。
他のシートでは問題なくスクリプトが実行されメールまで送信されることから、
データになにか問題のある文字列が含まれていると考え、
総当たりで探してみました。
まったく理由はわかりませんが、"SBI"という文字列が問題を引き起こしているようです。
その文字列のある行を削除することで、他のシートと同様に実行されました。
"SB"や"SBIA"...
2
票
山手線の電車遅延したらSlackに投稿するスクリプト
コメント書けないのでこちらで確認したいんですが、8 行目は以下の処理ですね。
if (weekday == 0 || weekday == 6) {
return; ←←←←ここ
}
GAS は詳しくないんですが、何も返さない return は仕様として許容されているのでしょうか?
2
票
組織内で「Webアプリケーションとして導入」をした際の認証について
自己解決しました。
GCPの認証情報から「APIキー」や「OAuth 2.0 クライアントID」などをいろいろ試しましたが、
シンプルに解決・・・(投稿前にやってたつもりだったけど)
headersにScriptApp.getOAuthToken()を使用すれば通りました。
var payload = {
// 省略
};
var param = {
...
2
票
承認済み
GASでif (foo != "white") { bar; } とするとfooが白くてもbarが実行される
APIの結果がどんな形式なのかはAPIを提供する側(この場合はGoogle)が決めることなので、質問者さんが"white"がいいと思ってもどうしようもありません。結果の形式を指定するAPIもないようですし。
こういった場合にコードの可読性を改善するには、定数のシンボルを用意するのが普通です。
const WHITE = "#ffffff";
...
if (currColor != ...
2
票
GAS「指定された ID のアイテムは見つからなかったか、アクセスする権限がありません」というエラーの原因に関する質問
フォルダIDが間違っている
コピペをミスしている
自分がIDだと思っている文字列が実はIDではない
IDを保持した変数の値がいつの間にか変わっている
メールアドレスが間違っている
権限を設定した際に間違ったメールアドレスを追加している
GASが、思ったのとは違うアカウントで動作している
権限を付与したつもりができていない
ブラウザ上で扱っているフォルダとIDで指定しているフォルダが別物である
...
2
票
承認済み
TypescriptでGASを書いていると、HttpMethodでerror TS2345が出る
let params = {
method: 'post',
contentType: 'application/json',
payload: '{"text":"Hello, World!"}'
};
のように、変数定義を書くと、型推論によりparamsの型が
{ method: string; contentType: string; payload: ...
2
票
承認済み
GASでGSSの内容を取得して複数のdiscordチャンネルに送信したいが、値が変わらない
追加質問に対する回答
推測になりますが、get_value() 内の for loop の内部で var message = ... としているために、変数 message のスコープが if 文の内側に限定されているのではないかと思います。なので、以下の様に変更します。ここで、haisintime が 0 の場合には None という文字列ではなく空文字列('')がセットされる事になります(...
2
票
Google Workspace Marketplace の審査が通らない 「Menu options not shown after App is installed」
英語版のstackoverflowにて回答があり
解決しました
https://stackoverflow.com/a/73406949/19766029
Change the development mode of your library to false
Assure that the Apps Script project holding your library has been ...
2
票
GASでスプレッドシートを参照し、特定の行を取得する
この場合、下記のようなBuilt-in functionでの出力はいかがでしょうか。
=SORTN(A2:C,1,,1,)
または、google-apps-scriptのタブから、Google Apps Scriptを使用する必要がある場合は、下記のようなサンプルスクリプトはいかがでしょうか。
function sample() {
const sheet = SpreadsheetApp....
2
票
Twitter v2 引用リツイートを検索
あるツイートで引用されているツイートの ID を取得するには、クエリパラメータ―に expansion を指定すれば良いです: https://developer.twitter.com/en/docs/twitter-api/expansions
具体的には expansions=referenced_tweets.id を指定すれば良いです。以下リクエストとレスポンスの例です。
% curl -...
2
票
GASでgoogle driveフォルダに「投稿者」の権限付与
手元の環境向けにシンプルなGASを書いて実行してみる限りでは、共有ドライブに対するDreiveApp.Folderオブジェクトに対する操作としては以下のようになるみたいです。
addEditor()
Reference上の記述: 編集者
Googleドライブ上での付与権限: 投稿者
addViewer()
Reference上の記述: 閲覧者
Googleドライブ上での付与権限: 閲覧者
...
2
票
承認済み
単純なコピー&ペーストがうまく実行されない
Google Apps Scriptにおける、「関数」の扱い方を最低限のレベルでも知る必要があります。
関数には「定義」と「実行」の2フェーズ必要ですが、それぞれ「どのように記述する必要があるのか」が決められています。
関数の「定義」
大雑把に書くと下記のような文法で記述することが出来ます。
function funcName(/* 仮引数 */) { /* 処理 */ }
const ...
2
票
承認済み
Object型の変数をString型に直したい
strContactは文字列の配列なので、for などでその配列要素を処理するのが良いでしょう。
for (let str of strContact) {
if (str.match(/\d{3}-\d{4}/)) {
...
}
型を調べるときは、typeof(strContact) よりは strContact.constructor.name の方がわかりやすい結果になります。
2
票
LINEで送信した内容をX(旧Twitter)の下書きに保存したい
エラーが指している部分は
"Authorization": f"Bearer {ACCESS_TOKEN}:{ACCESS_TOKEN_SECRET}",
の部分かと思います.
おそらく文字列に変数の値を埋め込みたいのだと推測しますが, JavaScript ではこの方法では埋め込みできません.
素直に文字列結合するか,...
無効化に投票
関連するタグ
google-apps-script × 292google-spreadsheet × 61
javascript × 47
gmail × 10
html × 9
api × 8
google-api × 7
line × 7
google-drive-sdk × 6
google-cloud-platform × 6
web-scraping × 5
google-workspace × 5
正規表現 × 4
twitter × 4
google-calendar-api × 4
php × 3
vba × 3
google-chrome × 3
webapi × 3
wordpress × 2
excel × 2
security × 2
oauth × 2
google-app-engine × 2
youtube × 2