teratail header banner
teratail header banner
質問するログイン新規登録

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

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

新規登録して質問してみよう
ただいま回答率
85.30%
Google Apps Script

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

並列処理

複数の計算が同時に実行される手法

Q&A

解決済

2回答

1281閲覧

Google Apps Scriptで並列処理の時に配列の変数の渡し方について

shimamura999

総合スコア13

Google Apps Script

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

並列処理

複数の計算が同時に実行される手法

0グッド

0クリップ

投稿2022/08/28 11:57

0

0

前提

Google Apps Scriptでslackの処理を実装しています。

Google Apps Scriptで並列処理の引数で悩んでいます。

下記のURLでgsとhtmlを用意すればいいことが分かりましたが

【GAS】「起動時間の最大値を超えました」エラー時の対策 処理の並列化編
https://hajiritsu.com/gas-timeout-error-routine/

起動側のgsで引数の変数に配列を用意して
htmlを介してgsで引数の変数を受け取る方法が分かりません。

実現したいこと

①gs
複数の配列の変数を用意して起動用htmlをキックする

②html
複数の配列の変数をうけとりgsのメソッドにそのまま渡す
③gs
配列の変数を実行して動かす

発生している問題・エラーメッセージ

slack からGasを起動して
gasでチャンネル情報を取得して中身を取得したところ
データが多かったためgasの6分問題にぶつかりました。
「ここから並列処理に移動予定」と書いてあるところを別関数にして
並列処理を行う予定です。

教えてくださると助かります。

よろしくお願いします。

エラーメッセージ

該当のソースコード

Google Apps Scrip

channels.forEach(function(name, id){
if(CHANNEL_INCLUDE.length > 0 && ! (CHANNEL_INCLUDE.includes(name))) return;
if(CHANNEL_EXCLUDE.includes(name)) return;
console.log('Retrieving messages from ' + name);
nMessagesPre = nMessages;

// ここから並列処理に移動予定
retrieveMessages(id, name, nMessages);
console.log(nMessages - nMessagesPre + ' messages were retrieved from channel: ' + name);
if(nMessages >= MAX_MESSAGES)return;
});

試したこと


下記のやりかたで並列ができたが引数に文字型しかできなかったので
利用できないことが判明しました。

Google Apps Scriptで並列処理をしたい
https://qiita.com/tanaike/items/e6b3b43461bfdec8005b

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

1⇨2についてはこんな感じでHTMLに値を受け渡すことが可能です
ここからクライアントのJavaScriptで値を整形して、再度GASの関数に受け渡ししてあげればokかと

code.gs

1const doGet = () => { 2 const data = [{ name: "id1", id: 1 }, { name: "id2", id: 2 }, { name: "id3", id: 3 }] 3 const html = HtmlService.createTemplateFromFile("index"); 4 html.data = JSON.stringify(data); 5 return html.evaluate(); 6}

index.html

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 </head> 6 <body> 7 <script type="text/json" data-json="<?= data ?>"></script> 8 </body> 9</html>

イメージ説明

投稿2022/08/29 14:43

編集2022/08/29 14:43
sk-sora--ypi

総合スコア535

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

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

0

sk-sora--ypi様

ありがとうございます。
教えていただいたやり方でgsからhtmlに渡すことができました。

投稿2022/08/31 12:45

shimamura999

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問