1

Vmerge とクエリ式を使用して、他の 6 つのスプレッドシートから必要なすべてのデータを抽出して蓄積するスプレッドシートがあり、統合されたすべてのデータは pdf に変換され、トリガー イベントを使用してメール ID に電子メールで送信されます。

投稿される添付メールがすべてヘッダーとその他の形式で構成されているのに、抽出されたデータが表示されないたびに問題が発生します。-同じスプレッドシートを開いたように見えますが、しばらくするとすべての-(ハイフン) がデータに置き換えられます / スプレッドシートを開いてしばらくすると、すべてのデータが更新されることを願っています。

シートのリンク

スクリーンショット

誰でもこの問題を解決するように指示できますか?

このソリューションの場合、-> すべてのデータが更新され、電子メール スクリプトが機能するはずです。または、メール送信スクリプトが開始する前に更新する必要があります。

または、他のより良いアイデアをいただければ幸いです。

4

1 に答える 1

2

ImportRangeや(Apps Script のカスタム数式も)などの一部のスプレッドシートの数式はImportXml、スプレッドシートにログインしているユーザーがいる場合にのみ評価されます。これらの機能には、評価されるアカウントが必要なようです。たとえば、ログインしているアカウントでは、インポートされる範囲にアクセスできる必要があります。このスプレッドシートをソースでimportRangeはなく誰かと共有する場合、この人がこのスプレッドシートを表示しているときに、関数は機能しません (スプレッドシートも使用していて、数式が既に評価されていない限り)。importRangeimportRange

要するに、この数式を使用して、時間駆動型 (または他のユーザーのログインを必要としない他のトリガー) でトリガーされるスクリプトを使用して、スクリプトがこのデータを読み取ることができると期待することはできません。

ただし、回避策は非常に簡単です。importRangeスクリプト内で関数が行うことを実行してください! 例えば

var source = SpreadsheetApp.openById('source-spreadsheet-key');
var data = source.getSheetByName('List').getRange('I6:AT500').getValues();
//then save it somewhere
var s = Spreadsheet.getActive().getSheetByName('hidden-import');
s.getRange('I6:AT500').setValues(data);
SpreadsheetApp.flush(); //force the data to be written
//so all the other formulas on your spreadsheet get updated with the new data

queryスクリプトが模倣するのが難しいや などのすべての「論理」式は、スプレッドシートに残すことができますが、直接vmergeネストする代わりに、私が発明したこの「hidden-import」シートを参照してください。importRange

[編集]

空でない行のみをコピーするには、次のようにします。

var data = SpreadsheetApp.openById('source-spreadsheet-key').
  getSheetByName('List').getDataRange().getValues();
Spreadsheet.getActive().getSheetByName('hidden-import').
  getRange(1,1,data.length,data[0].length).setValues(data);
于 2012-05-28T11:41:48.337 に答える